C和C 介面的相互呼叫

2021-09-01 22:57:44 字數 772 閱讀 9667

我們為什麼要學習c和c++介面的相互呼叫?

答:在工作中,我們經常要使用c和c++混合程式設計,那麼,在呼叫對方介面時,總是不可避免地出現問題。為了讓雙方和諧地工作,我們就得用到extern "c"。

extern "c" 是c++的特性,是一種鏈結約定,它並不影響呼叫函式的定義,即使做了該宣告,對函式型別的檢查和引數轉換仍要遵循c++的標準,而不是c。

extern "c" 主要是為了解決c++在呼叫c函式庫時,用c++直接鏈結就會出現不能識別符號的問題,而用上extern "c"後,告訴c++編譯器要以c語言的方式編譯和鏈結函式,即直接使用函式名而不是乙個經過處理的函式名。

cpp檔案中加extern "c"

可以修改c++的檔案

.cpp檔案中加extern "c"(和c++呼叫c的介面處理方法一樣)

不能修改c++的檔案

通過加中間層處理

原始檔不確定什麼編譯器編譯

則通過c++編譯器中的必有的乙個巨集來判斷

C和C 相互呼叫

c和c 相互呼叫 2011 11 01 18 42 29 分類 c c 在專案中融合c和c 有時是不可避免的,在呼叫對方的功能函式的時候,或許會出現這樣那樣的問題。近來在主程式是c語言,而呼叫c 功能函式的時候,c 的 h標頭檔案都能找到,功能函式也都定義了,最重要的是,單獨編譯c 的時候完全沒有問...

C 和C的相互呼叫

在c專案中融合c 和c的 是實際工程中不可避免的,就如一般底層的驅動是用c寫的,而應用層一般會用c c 的編譯器能相容c語言的編譯器,但他優先以c 的方式編譯 extern關鍵字強制讓c 編譯器對 進行c方式編譯注意 cplusplus 是c 編譯器都內建的乙個巨集,可以用來判斷是不是c 編譯器,那...

C和C 如何相互呼叫

為什麼不能直接呼叫 在編譯的時候c和c 生成符號的規則不同,所以直接呼叫會出現符號未定義的鏈結錯誤。示例1 下面演示相互呼叫介面錯誤示例 test.c int sum int a,int b main.cpp int sum int a,int b 在本檔案中宣告一下 int main 錯誤 1 e...