【CAPL】局部变量:静态地创建,启动时初始化,再次进入保留原值

CAPL中局部变量的特别之处

与C语言不同,局部变量在CAPL中总是被静态地创建。

这意味着初始化只在程序体启动时执行,

当再次进入程序时,局部变量被假定是上一次跳出程序时的值。

局部变量的作用域

  • 仅限于当前函数体范围内,即该函数的大括号范围内

应用:解释一些奇怪代码

代码中用if就实现了循环,为什么会?

  • CAPL中的局部变量:静态地被创建,并且可以再次进入程序时保留上一次的值
    • 因此这里的int i虽然是局部变量,但是有种全局变量的属性,可以用if扭曲地实现循环
  • 代码示例

  • 代码示例:
    on message MSG_LS
    {
      int i = 0;
      if(@sysvar::MyNameSpace::trigger == 1){
        write("active!!");
        i++;
        if(i<3){     
          write("count less than 3:%d, timenow = %d",i,timeNow());
          //@sysvar::MyNameSpace::trigger = 1;
          $`switch=234;
        }else{
          write("count done: %d, timenow = %d",i,timeNow());
          @sysvar::MyNameSpace::trigger = 0;
        }    
      }else if(@sysvar::MyNameSpace::trigger == 0){
        write("inactive...timenow = %d",timeNow());
        $`switch = 0;
        i = 0;
      }
    }
    
  • 运行结果:i 的更新均为200ms间隔,没有提前跳出

    image

参考

posted @ 2025-08-14 22:06  anliux  阅读(35)  评论(0)    收藏  举报