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

标签 c++ file global-variables

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

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

  1. 在 costants.h 中我想要 int 类型的全局变量调用 myVar。

    static int myVar=0;

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

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

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

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

问题是这里的 myVar 是 0 而我希望它是 3!

最佳答案

如果您将变量定义为 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 没有冲突。

关于c++更改不同文件中的全局变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23390034/

相关文章:

安卓 Kotlin : Getting a FileNotFoundException with filename chosen from file picker?

c - 有没有办法让文件描述符在 Windows 中不被阻塞?

c# - 在所有表单中使用 DataTable 中的数据

javascript - 在 javascript 的其他页面上无法访问全局变量中的数据

c++ - gcc -I 和 -L 选项似乎不起作用

c++ - 人物分类

c++ - decltype(void()) 和 decltype(void{}) 的区别

c++ - 函数模板特化生成链接错误

c - "cnt += num % 2;"和 "if (num % 2)++cnt;"之间的区别

c++ - 将有限行数写入文本文件的算法