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



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

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

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

    static int myVar=0;

  2. 在main.cpp中,我包括头文件,并调用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();

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

    #include "constants.h"
    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 declaration放在头中,这样您就可以访问包含头的每个文件中的变量。在头文件中将变量声明为extern int var和在头文件中包含变量的文件中声明变量int var没有冲突。

相关内容

  • 没有找到相关文章

最新更新