c ++更改不同文件中的全局变量值

时间:2014-04-30 13:52:22

标签: c++ file global-variables

我对全局变量有些麻烦。我的任务是在头文件中定义一个全局变量,其值可以在其他文件中更新。如果我修改文件中的全局变量的值,我希望在所有其他文件中可以看到此更新的值。

例如,让我说我有4个文件:main.cpp constants.h server.h和server.cpp。

    costants.h中的
  1. 我希望int类型的全局变量调用myVar。

    static int myVar=0;

  2. 在main.cpp中的
  3. 我包含头文件,我调用在server.cpp中实现的myFunction

    #include "constants.h"
    cout<<"myVar is:"<<myVar<<"\n"; // prints 0; myVar=3; cout<<"now myVar is:"<<myVar<<"\n"; // prints 3; void myFunction();

  4. 在sever.cpp中的
  5. 我包含常量头文件并实现myFuntion()

    #include "constants.h"
    void myFunction() { cout<<"myVar in server.cpp is:"<<myVar<<"\n"; //prints 0 not 3!!! }

  6. 问题是myVar在这里是0而我希望它是3!

1 个答案:

答案 0 :(得分:5)

如果您将变量定义为static,则意味着变量的范围是文件本身,或者在其他世界中,将为您在其中包含的每个文件创建变量你的头文件。因此main.cppserver.cpp都会有自己的myVar变量实例。

您可以在main.cpp中声明变量,并使用extern关键字访问此变量:

// In main.cpp
int myVar = 0;

// In server.cpp
extern int myVar;

另一个解决方案是将extern声明放在标题中,这样您就可以访问包含标题的每个文件中的变量。在头文件中将变量声明为extern int var并在包含标题的文件中声明变量int var时没有冲突。