1. 程式人生 > >c++多個檔案中如何共用一個全域性變數

c++多個檔案中如何共用一個全域性變數

例子:

標頭檔案: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定義。