C++ extern定义多文件共享全局变量

思路

参考知乎提问“在C++中如何使用全局变量?”下面杨个毛的回答:

我觉得题主需要的回答是“把变量定义在函数外面”,比如这样:

#include 
#include 

std::string msg; //这个就叫全局变量

int main()
{
  msg = "Hello, world!";
  std::cout << msg << std::endl;

  return 0;
}

不过呢,这么做以后你会逐渐逐渐遇到各种问题,比如说多个.cpp文件都要用到同一个全局变量咋办?
你需要做的是在一个.cpp里定义这个变量,然后在头文件里extern这个变量。问题解决。
头文件里写:extern std::string msg;
某一个.cpp文件里写:std::string msg;
所有引用了这个头文件的cpp文件里就都可以使用msg这个全局变量了。

作者:杨个毛 链接:https://www.zhihu.com/question/24389589/answer/50062993
来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

例子

state.h:

#ifndef state_h
#define state_h

const int MAX = 200;

extern int num;
extern int array[MAX];

#endif

state.cpp:

#include "state.h"

int num = 0;
int array[MAX];  //即使不赋值,也需要在此定义

class1.cpp:

extern int num;
extern int array[MAX];

num++;
array[0] = 1;

你可能感兴趣的:(C++)