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。