重载函数中的全局变量

时间:2019-07-11 10:34:33

标签: function global-variables capl

在函数或测试函数中再次初始化时,CAPL中的全局变量会发生什么情况?

variables
{
    int i;
}

testfunction temp()
{
    int i = 0;
    for(i = 0; i < 10; i++)
    {
        // do something
    }
}

for(i = 0; i < 5; i++)
{
    temp();
}

1 个答案:

答案 0 :(得分:0)

在CAPL的变量部分中,声明了全局变量。此处定义的标识符具有程序范围。声明全局变量后,整个程序的任何函数都可以对其进行访问。

variables
{
    int xyz; // Identifier 'xyz' declared in an program scope
}

第二个标识符在函数范围中声明,并且与以前的标识符没有区别。函数作用域具有更多的内部作用域。

void temp()
{
    int xyz; // Identifier 'xyz' declared in an function scope 
    xyz=5;
    write("Inner scope -> d%",xyz);
}

CAPL设置了'C like'范围规则,因此:如果两个标识符具有相同的名称但范围不同,则内部范围的标识符会隐藏外部范围的标识符。< / em>

在此示例中,函数temp中的对象xyz隐藏了全局变量xyz:

on key * // call event
{
  xyz=10;
  write("Outer Scope -> %d",xyz);  //  Program Scope
  temp();                          //  Function Scope
}

输出:

  • “内部范围-> 5
  • “外部范围-> 10