如何在C 中呼叫C函式

2021-08-03 13:56:52 字數 781 閱讀 8302

這是程式設計師面試寶典中的一道題,查資料得到解決方法:

注意這裡的c呼叫c++或者c++呼叫c意思是.c檔案中呼叫.cpp檔案中**,或者相反。

整合開發環境如vc++6.0或者vs都是以檔案字尾來區別當前要編譯的是c**還是c++**,然後採用響應的編譯、呼叫協議等。

使用extern 「c」 主要是因為c編譯器編譯函式時不帶引數的型別資訊,只包含函式的符號名字。如

int foo( float x )

c編譯器會將此函式編譯成類似_foo的符號,c聯結器只要找到了呼叫函式的符號,就認為連線成功。

而c++編譯器為了實現函式過載,會在編譯時帶上函式的引數資訊。如它可以把上面的函式編譯成類似於_foo_float這樣的符號。

所以,c呼叫c++,使用extern "c"則是告訴編譯器依照c的方式來編譯封裝介面,當然介面函式裡面的c++語法還是按c++方式編譯。

這個函式檔名是cpptest.cpp.

#include 

using

namespace

std;

#ifdef __cplusplus

extern

"c"#ifdef __cplusplus

}#endif // __cplusplus

void main()

#ifdef __cplusplus

}#endif // __cplusplus

如何在C 中呼叫C函式?

假如在乙個專案中同時包含了c和c 當c 呼叫c函式時,以傳統c程式設計 include h 後,宣告函式。由於main.cpp 是個c 以c方式的呼叫,g 編譯器無法通過編譯。解決方案一 重寫乙個專門被c 用的標頭檔案 可能存在是別人已經寫好的標頭檔案,我們無法修改等問題 e.g.新增乙個標頭檔案 ...

如何在C 中呼叫C程式

c 和c是兩種完全不同的編譯鏈結處理方式,如果直接在c 裡面呼叫c函式,會找不到函式體,報鏈結錯誤。要解決這個問題,就要在 c 檔案裡面顯示宣告一下哪些函式是c寫的,要用c的方式來處理。1.引用標頭檔案前需要加上 extern c 如果引用多個,那麼就如下所示 extern c 然後在呼叫這些函式之...

如何在C 中呼叫C程式?

c 和c是兩種完全不同的編譯鏈結處理方式,如果直接在c 裡面呼叫c函式,會找不到函式體,報鏈結錯誤。要解決這個問題,就要在 c 檔案裡面顯示宣告一下哪些函式是c寫的,要用c的方式來處理。1.引用標頭檔案前需要加上 extern c 如果引用多個,那麼就如下所示 extern c 然後在呼叫這些函式之...