我正面临c++中全局变量的问题。我有一个函数叫iDraw()
。我计划在这里写两段代码,这两段代码将由一个名为flag
的global 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;