筆記 變數多重定義的問題

2021-08-03 13:37:03 字數 408 閱讀 8059

1.在乙個.h檔案中定義了乙個變數(或函式),該.h檔案又被其他檔案所包含,

鏈結時就會產生該變數(或函式)多重定義的錯誤。

2. 把」變數/

函式宣告

「放在.h,而把」變數/函式定義「放在.c。

函式的宣告和定義很好區分,但是變數的宣告和定義(尤其在不帶初始化的情況下,如int a;)長的一模一樣。

解決方法:

extern 宣告乙個變數卻不定義它。

通過extern關鍵字擴充套件全域性變數的作用範圍(即擴充套件到包含該檔案的檔案中)。

3. 不是所有的變數都能用 extern 宣告,只有全域性變數並且沒有被 static 宣告的變數才能宣告為 extern 。

所以如果你不想自己原始檔中全域性的變數被其他檔案引用,你就可以給變數加上 static 宣告。

C 標頭檔案包含變數時,多重定義問題!

multiple definition of 在標頭檔案中.h中包含有變數定義的時候,一般是想作為全域性變數來使用,但是使用中總是出現multiple definition of的問題,看一下 oracleinfclass.h ifndef oracleinfclass h define oracl...

C Primer 符號的多重定義問題

和 這樣的符號,既能用作表示式裡的運算子,也能作為宣告的一部分出現,符號的上下文決定了符號的意義 int i 42 int r i 緊隨型別名出現,因此是宣告的一部分,r是乙個引用 int p 緊隨型別名出現,因此是宣告的一部分,p是乙個指標p p i 出現在表示式中,是乙個取位址符 p i 出現在...

C 函式多重定義問題

c 標頭檔案包括了函式的宣告.以及在標頭檔案中實現了函式的定義.那麼這個標頭檔案.在別的地方只能被 include一次。如果在其他的地方 至少兩次 include這個標頭檔案.那麼就會出現函式多重定義的問題.c 在編譯標頭檔案的時候.已經找到了該函式的宣告 和它的定義.再次呼叫標頭檔案的時候。出現兩...