0

我在 C++ 中遇到了全局变量的问题。我有一个名为iDraw(). 我计划在这里编写两段代码,它们将由一个global variable命名的flag. 在 main 函数中,如果我设置flag为 1 然后调用iDraw,则将执行一部分代码;如果我将 flag 设置为 2 然后调用它,那么将执行代码的另一部分。但它没有按预期工作。似乎当我在主函数中更改标志的值时,它不起作用。它仍然保留我最初在程序顶部声明的值。克服它的解决方案是什么?我使用了一个名为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;
}   
4

1 回答 1

2

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

如果您的程序包含多个包含此 global.h 的 .cpp 文件,则存在问题。因为每个 .cpp 文件都有自己的flag变量副本,并且更改其中一个不会更改另一个副本。

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

//*.cpp
int flag = 0;

//global.h
extern int flag;
于 2013-04-15T17:27:53.640 回答