簡體   English   中英

重載函數中的全局變量

[英]Overloading global variable in function

當再次在函數或測試函數中初始化時,CAPL中的全局變量會發生什么情況?

variables
{
    int i;
}

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

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

在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”范圍規則,因此: 如果兩個標識符具有相同的名稱但范圍不同,則內部范圍中的標識符將隱藏外部范圍中的標識符。

在此示例中,函數temp中的對象xyz隱藏了全局變量xyz:

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

輸出:

  • “內部范圍-> 5
  • “范圍-> 10

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM