改变全局变量

时间:2013-04-15 16:01:05

标签: c++ global-variables

我在c ++中面临全局变量的问题。我有一个名为iDraw()的函数。我计划在这里编写两段代码,这些代码段将由名为global variable的{​​{1}}控制。在main函数中,如果我将flag设置为1然后调用flag,那么将执行一部分代码;如果我将标志设置为2然后调用它,那么将执行另一部分代码。但它并没有期待。看起来像我在主函数中更改标志的值时,它不起作用。它仍保留我最初在程序顶部声明的值。什么是克服它的解决方案?  我使用了一个名为iDraw的头文件,其中我声明了所有的全局变量。

global.h

1 个答案:

答案 0 :(得分:2)

  

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

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

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

//*.cpp
int flag = 0;

//global.h
extern int flag;