2011-07-04 126 views
-2

可能重複:
What is the correct way of using extern for global variables ?如何在這種情況下聲明全局變量?

對不起,重複類似的問題。

//object.h 
object p; 



//b.h 
#include object.h 



//b.cc 
extern object p; 


//c.h 
#include object.h 
#include b.h 

//c.cc 
extern object p; 


//main.cc 
#include c.h 
extern object p; 
int main() {} 

基本上我需要cbmain都訪問對象p。我還需要c訪問b和b c中的方法才能訪問Object類頭。什麼是聲明全局變量p的方法?上面的代碼給了我多重定義錯誤。我不能發佈整個代碼太長,但我相信上面描述的情況很好。

+0

對不起,帖子沒有完全回答我的問題。 – Mark

+0

Xeo的帖子正是在這裏回答你的問題。唯一的是文件名(例如object.h而不是a.h)。 – interjay

+0

在他的回答中,我沒有針對a.cc的object.cc。 – Mark

回答

1

聲明的全局變量只是.cc文件的一個。將它的extern聲明放入相應的.h文件中,然後將該文件包含在需要訪問全局變量的其他每個.cc中。

以這種方式,變量將是宣佈每.cc(由於從.hextern聲明#include d),但將僅在單個.cc定義

在另一方面,你應該永遠頭定義全局變量,否則就會在鏈接過程中得到多個定義錯誤(除非他們有內在聯繫,即它們被宣佈爲static,但你永遠不會需要在頭中定義一個static變量)。

順便說一下,請記住在頭文件中使用include guard以避免編譯階段出現多個定義錯誤。

+0

這回答了我的問題。謝謝 – Mark

相關問題