標題: 定義與聲明 [打印本頁]
作者: liuyang 時間: 2012-1-14 03:53
標題: 定義與聲明
在頭文件定義類型,常常會遇到編譯時報,已在某個模塊中定義了。
這其實是由于重復定義導致C++編譯器無法通過編譯,C編譯器就能通過,因為它有重復定義機制。 文件在編譯時會把每個源代碼文件分別編譯成對應的目標文件,其中會含有引入變量符號。頭文件一般只存放聲明。頭文件只是把代碼裝入到源代碼中然后編譯的,如果你在.h里定義了變量將會導致多個引用其頭文件的模塊都定義了改變量,致使VC編譯器報錯。 所以一般在.h中用extern int i;只聲明下,編譯時就是一些外部引入變量符號,然后再某個.cpp中在具體定義。
或者用這個只就省了聲明與定義分開寫的麻煩。
假設cl.h 代碼如下
#ifdefine MAIN_DEFINE
# define EXTERN //定義
#else
#define EXTERN extern //聲明
#endif
在定義的.cpp中加載
#define MAIN_DEFINE
#incluade " cl.h"
在聲明的.cpp中加載
#incluade " cl.h"
歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |