Protothreads:switch 语句的可用与不可用
只要 switch 语句块里面不出现 PT_* 系列宏,那么是可以使用的。
如果 switch 语句里面出现了 PT_* 宏那么逻辑就混乱了,因为 PT_* 宏里有 case 语句,这些 case 语句本来是要和 PT_BEGIN 中的 switch 相匹配的,但是现在又加入了新的 switch 语句,那么根据就近匹配原则, PT_* 宏中的 case 将与新增的 switch 语句相匹配,而不是去跟 PT_BEGIN 宏内的 switch 语句相匹配。
当然,最保守的做法,就是不要用 switch 语句了,使用 if-else 语句替代 switch 语句。使用了 switch 之后,即使刚开始没有在 switch 语句块中调用 PT_* 宏,后续修改代码时,可能会忘记这回事,将引起 bug。










