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 在編譯標頭檔案的時候.已經找到了該函式的宣告 和它的定義.再次呼叫標頭檔案的時候。出現兩...