C 函式多重定義問題

2021-08-20 14:53:15 字數 759 閱讀 8212

c++標頭檔案包括了函式的宣告.以及在標頭檔案中實現了函式的定義.

那麼這個標頭檔案.在別的地方只能被#include一次。

如果在其他的地方 至少兩次 #include這個標頭檔案.那麼就會出現函式多重定義的問題.

c++在編譯標頭檔案的時候.已經找到了該函式的宣告 和它的定義.

再次呼叫標頭檔案的時候。出現兩個定義。而編譯器不知道該選擇哪個定義。所以會出現錯誤.

#ifndef  test_one_h

#define test_one_h

#include

class testone ;

void testone::speak()

testone::testone()

testone::~testone()

#endif // ! test_one_h

這是乙個testone的標頭檔案.我要在test.cpp中呼叫他的函式.

#include

#include "testone.h"            --------------->在這裡包含了它的標頭檔案

int main()

下面在testone.cpp檔案中 包含它的標頭檔案

#include"testone.h" 

那麼結果就是 testone.cpp 和 test.cpp中包含了共同的標頭檔案.那麼就會編譯錯誤

找到乙個或多個多重定義的符號:

這個時候去掉乙個就行了.

建議還是標頭檔案填寫函式宣告.而函式實現放在cpp檔案中.

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 出現在...

筆記 變數多重定義的問題

1.在乙個.h檔案中定義了乙個變數 或函式 該.h檔案又被其他檔案所包含,鏈結時就會產生該變數 或函式 多重定義的錯誤。2.把 變數 函式宣告 放在.h,而把 變數 函式定義 放在.c。函式的宣告和定義很好區分,但是變數的宣告和定義 尤其在不帶初始化的情況下,如int a 長的一模一樣。解決方法 e...