全域性變數一定要加 extern

2021-04-14 23:38:51 字數 660 閱讀 6097

儘管你已經使用了

#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...