儘管你已經使用了
#ifndef _a
#define _a
class a
;int i;
#endif
但還是出現這樣的錯誤!!!!
linking...
print1.obj : error lnk2005: "int i" (?i@@3ha) already defined in main.obj
print1.obj : error lnk2005: "int i" (?i@@3ha) already defined in main.obj
debug/abc.exe : fatal error lnk1169: one or more multiply defined symbols found
error executing link.exe.
主要是你沒有搞清楚乙個問題, redeclare & redefine
#ifndef #define #endif 只能防止 redeclare,
若多次引用 此標頭檔案,int i不是被定義了多次嗎, 肯定出錯啊!
所以我們在被多次引用的標頭檔案裡面使用全域性變數一定要加extern
extern int i;
不要再搞錯了!
1 全域性變數extern 總結
extern全域性變數 1.標頭檔案說明 標頭檔案一般存放變數 函式的宣告 區別宣告和定義 因為標頭檔案可能會被多個原始檔引用 此處非乙個ifndef的乙個標頭檔案被二次包涵 假如將定義放入標頭檔案,標頭檔案被多個原始檔引用就會對變數 函式的重定義錯誤。ps 變數 函式只能定義一次,永遠不要在標頭檔...
用extern定義全域性變數
1.extern的作用 2.例項 以上已經說了extern的作用,下面我們來舉個例子,如 在test1.h中有下列宣告 ifndef test1h define test1h extern char g str 宣告全域性變數g str void fun1 endif 在test1.cpp中 inc...
用extern定義全域性變數
1.extern的作用 2.例項 以上已經說了extern的作用,下面我們來舉個例子,如 在test1.h中有下列宣告 ifndef test1h define test1h extern char g str 宣告全域性變數g str void fun1 endif 在test1.cpp中 inc...