今天測試了一下c++下重複定義會出現什麼問題,使用gcc和vs2010做了測試,兩者的測試結果一樣
一共有5個檔案,2個頭檔案,3個cpp檔案。內容分別如下
#ifndef _redefine0_h_
#define _redefine0_h_
#includeusing namespace std;
//變數宣告和定義
int i; //錯誤
int j=0; //錯誤
extern int k; //正確
extern int k=0;//錯誤
//函式宣告和定義
void func() //錯誤
{}void fun(); //正確
//類宣告和定義
class dog //正確
;class dog //編譯通過,最終輸出和main中inlude順序有關,先定義為準
void fun(); //正確
//類宣告和定義
class dog //正確
;class dog //編譯通過,最終輸出和main中inlude順序有關,先定義為準
C變數重複定義錯誤
c c 語言中有很多地方要用到extern,但是如果沒有真正的了解它的意義,會給程式設計帶來很大的麻煩,為了使大家少走彎路,特祥細的說明一下。對於比較小的程式,一般只有乙個c檔案和乙個標頭檔案,全域性變數我們通常會直接定義在c檔案中,在程式之前加int i定義。如果要在標頭檔案中定義有以下兩種方法 ...
C 鏈結時重複定義
因為在標頭檔案中有 ifndef define endif 所以在編譯的時候,標頭檔案不會被重複包含,不會出現重定義的問題。但是如果標頭檔案中有函式的定義,那麼不同cpp檔案都包含這個標頭檔案,在彙編成.o檔案後,不同的.o檔案中都含有標頭檔案中函式的定義,鏈結階段就會出現重定義的問題。如果出現這種...
C語言中重複定義的問題
幾個基本知識 1 標頭檔案 標頭檔案的作用在於編譯時,會在 include h 位置處展開,所以如果有多個.c檔案include同乙個標頭檔案 很常見 如果標頭檔案編寫時不進行處理,出現重複定義是不可避免的。尤其是當乙個專案分成多個模組的時候。2 一般,把函式 變數 結構體 類等放在.c或者.cpp...