原始檔如下:
1.cpp:
void show(){
cout<< "hello world" <2.cpp:
#include "1.cpp"
int main() {
cout<<"main"<
編譯通過,鏈結錯誤,提示duplicate symbol z6showv
這是因為第二個cpp檔案直接將第乙個cpp檔案包含進來,而不是標頭檔案,這樣就會使得show函式定義兩遍,第一遍在1.cpp中定義了一次,第二遍在2.cpp中定義了一次
編譯的時候互不可見,所以沒問題,到了鏈結時,就會出現重複定義的錯誤,鏈結器不能確定應該鏈結到1.cpp中的show函式還是2.cpp中的show函式
所以定義只能夠放在cpp檔案中,而宣告需要放到標頭檔案中。
C變數重複定義錯誤
c c 語言中有很多地方要用到extern,但是如果沒有真正的了解它的意義,會給程式設計帶來很大的麻煩,為了使大家少走彎路,特祥細的說明一下。對於比較小的程式,一般只有乙個c檔案和乙個標頭檔案,全域性變數我們通常會直接定義在c檔案中,在程式之前加int i定義。如果要在標頭檔案中定義有以下兩種方法 ...
DllMain重複定義的錯誤
今天建立winsole dll工程,從mfc工程中拷貝過來檔案,遇到如下問題 linking.nafxcwd.lib dllmodul.obj error lnk2005 dllmain 12 already defined in libcmtd.lib dllmain.obj nafxcwd.li...
c 重複定義
今天測試了一下c 下重複定義會出現什麼問題,使用gcc和vs2010做了測試,兩者的測試結果一樣 一共有5個檔案,2個頭檔案,3個cpp檔案。內容分別如下 ifndef redefine0 h define redefine0 h includeusing namespace std 變數宣告和定義...