C++ extern定義多文件共享全局變量

思路

參考知乎提問“在C++中如何使用全局變量?”下面楊個毛的回答:

我覺得題主需要的回答是“把變量定義在函數外面”,比如這樣:

#include <iostream>
#include <string>

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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章