Protothreads:临时变量的可用与不可用

  • 临时变量不能作为 ​​PT_*​​ 宏内调用的函数的入参数。
  • 临时变量不能跨越 ​​PT_*​​ 系列宏。
  • 临时变量可以存储 ​​PT_*​​​ 宏中函数的返回值,但是不能传递给下一个 ​​PT_*​​ 宏。
  • 函数参数可以使用,因为每次进入函数都会传入正确的值,但是修改过的传值参数的值不能跨 ​​PT_*​​ 宏。
  • GCC 不同的优化级别对未初始化变量引用的警告不一样!有些优化会警告,有些优化不会警告。
  • 基本原则是:再次进入协程时,应当能恢复上次退出协程时的状态。如果后一次进入协程时还要引用上一次退出协程时赋值过的变量,那么该变量就不能是临时变量。