修改全局变量

changing global variables

本文关键字:全局变量 修改      更新时间:2023-10-16

我正面临c++中全局变量的问题。我有一个函数叫iDraw()。我计划在这里写两段代码,这两段代码将由一个名为flagglobal variable控制。在main函数中,如果我将flag设置为1,然后调用iDraw,则执行一部分代码;如果我设置flag为2,然后调用它,那么代码的另一部分将被执行。但它并没有发挥预期的作用。似乎当我在主函数中改变flag的值时,它不起作用。它仍然保存着我最初在程序顶部声明的值。克服它的办法是什么?我使用了一个名为global.h的头文件,在那里我声明了所有的全局变量。

extern int flag=0, animflag=1;
/* 
    function iDraw() is called again and again by the system.
*/
void iDraw()
{
    //place your drawing codes here 
    if(flag==1){
        iClear();
        iSetcolor(0,0,128);
        iShowBMP(0,0, "Images\intro.bmp");
    }
    if(flag==2){
        //other codes here
    }
}
int main()
{
iInitialize(900, 500, "demooo");
animflag=0;
flag=1; // seems like this line has no impact
iDraw();
return 0;
}   

我使用了一个名为global.h的头文件,在这里我声明了所有的全局变量。

如果你的程序包含多个.cpp文件,其中包括这个global.h,那就有问题了。因为每个.cpp文件都有自己的flag变量副本,更改其中一个副本不会更改其他副本。

必须在.cpp文件中定义全局变量。在global.h中,你可以提供extern声明。

//*.cpp
int flag = 0;
//global.h
extern int flag;