c++多個檔案中如何共用一個全域性變數
阿新 • • 發佈:2019-01-04
例子:
標頭檔案:state.h 原始檔:state.cpp
其它原始檔:t1.cpp t2.cpp t3.cpp, 這些原始檔都包含標頭檔案state.h。
需要定義一個全域性變數供這些原始檔中使用:方法如下
1、在 state.h宣告全域性變數: extern inta;
2、在state.cpp中定義該全域性變數:int a =10;
這樣其它原始檔就可以使用該變數啦
這裡需要的是“宣告”,不是“定義”!根據C++標準的規定,一個變數宣告必須同時滿足兩個條件,否則就是定義:
(1)宣告必須使用extern關鍵字;(2)不能給變數賦初值
extern int a; //宣告
int a; //定義
int a = 0; //定義
extern int a =0; //定義
標頭檔案中應使用extern關鍵字宣告全域性變數(不定義),如果這個變數有多個檔案用到,可以新建一個cpp,在其中定義,把這個cpp加入工程即可。標頭檔案請不要定義任何變數,那是非常業餘的行為……
一般在標頭檔案中申明,用extern,在cpp中定義。 如果在標頭檔案中定義,如果這個標頭檔案被多個cpp引用,會造成重複定義的連結錯誤。
標頭檔案只能申明全域性變數(extern),不可定義(不推薦使用) .cpp裡,在最外層定義即可(int gi),直接引用
如果在.cpp裡使用static定義,則該變數只在當前cpp檔案中有效,在別的檔案中無效
在.h裡使用static定義,不會進行編譯(.h檔案不編譯),只會在其每個include的cpp檔案中包含編譯,相當於在.cpp裡使用static定義。