1. 程式人生 > >c++多個文件中如何共用一個全局變量

c++多個文件中如何共用一個全局變量

calc 其它 pop 例子 頭文件 標準 關鍵字 word sin

例子:

頭文件: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定義。

c++多個文件中如何共用一個全局變量