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。