C 學習之重複定義的錯誤

2021-06-29 12:24:29 字數 401 閱讀 1436

原始檔如下:

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 變數宣告和定義...