我在c ++中面临全局变量的问题。我有一个名为iDraw()
的函数。我计划在这里编写两段代码,这些代码段将由名为global variable
的{{1}}控制。在main函数中,如果我将flag
设置为1然后调用flag
,那么将执行一部分代码;如果我将标志设置为2然后调用它,那么将执行另一部分代码。但它并没有期待。看起来像我在主函数中更改标志的值时,它不起作用。它仍保留我最初在程序顶部声明的值。什么是克服它的解决方案?
我使用了一个名为iDraw
的头文件,其中我声明了所有的全局变量。
global.h
答案 0 :(得分:2)
我使用名为global.h的头文件,其中我声明了所有的全局变量。
如果您的程序包含多个包含此global.h的.cpp文件,则存在问题。因为每个.cpp文件都有自己的flag
变量副本,并且更改其中一个不会更改另一个副本。
您必须在其中一个.cpp文件中定义全局变量。在global.h中,您可以提供extern
声明。
//*.cpp
int flag = 0;
//global.h
extern int flag;