記錄一次意外經歷
在c++函式中使用c** 在函式前加上extern 「c」來註明:
extern "c"的主要作用就是為了能夠正確實現c++**呼叫其他c語言**。
加上extern "c"後,會指示編譯器這部分**按c語言的進行編譯,
而不是c++的。由於c++支援函式過載,因此編譯器編譯函式的過程中會將函式的引數型別也加到編譯後的**中,
而不僅僅是函式名;而c語言並不支援函式過載,因此編譯c語言**的函式時不會帶上函式的引數型別,一般之包括函式名
函式宣告可以有多個,而函式實現只能有乙個.
c中呼叫c++
1.將c++檔案中的被呼叫函式用extern "c"來修飾
2.將c++標頭檔案包含在c**中.
3.出現錯誤:expected identifier or 『(』 before string constant 是因為出現了extern 「c」而gcc不認識則個關鍵字,所以需要使用g++編譯
4. 出現c_main.c:(.text+0xe):對『main_test』未定義的引用 是因為沒有將main_test的源**也就是.c檔案放在編譯命令中,產生的問題, 正確的編譯命令為 < g++ 所有的.c .o檔案 -o 生成的檔名 >
5. 在程式中對c++函式不需要特殊的標記與說明
c++呼叫c
1.在c++中使用extern "c"來修飾c的標頭檔案來說修飾c的標頭檔案來引用或者在c函式中加入巨集定義:
#ifdef _cplusplus
extern "c"
#endif
2.編譯時使用g++進行編譯即可
C與C 混合程式設計 編譯
1.工程檔案架構 drwxrwxr x 3 joshyoby joshyoby 4096 2月 25 15 03 drwxrwxr x 8 joshyoby joshyoby 4096 2月 25 14 45 rw rw r 1 joshyoby joshyoby 671 2月 25 14 58 m...
C 和 C 混合編譯簡述
一 extern c 的作用 最重點 1.extern c 的真實目的是實現類c和c 的混合程式設計。extern c 是由 提供的乙個連線交換指定符號,用於告訴 這段 是 函式。extern c 後面的函式不使用的c 的名字修飾,而是用c。這是因為c 編譯後庫中函式名會變得很長,與c生成的不一致,...
c與c 混合程式設計
在純c的系統中使用c 的類出現了編譯錯誤!程式 begin mymain.c include thesocket.h void main int argc,char argv end mymain.c begin thesocket.h class thesocket end thesocket.h...