1. 程式人生 > >C++程式中如何呼叫C函式

C++程式中如何呼叫C函式

C++語言支援函式過載,C 語言不支援函式過載。函式被C++編譯後在庫中的名字與C 語言的不同。假設某個C函式的宣告如下:
void foo(int x, int y);
該函式被C編譯器編譯後在庫中的名字為_foo,而C++編譯器則會產生像_foo_int_int之類的名字用來支援函式過載和型別安全連線。由於編譯後的名字不同,C++程式不能直接呼叫C函式。C++提供了一個C連線交換指定符號extern“C”來解決這個問題。例如:
extern “C”
{
   void foo(int x, int y);
   … // 其它函式
}

或者寫成

extern “C”
{
   #include “myheader.h”
   … // 其它C標頭檔案
}

這就告訴C++編譯譯器,函式foo是個C連線,應該到庫中找名字_foo而不是找_foo_int_int。C++編譯器開發商已經對C標準庫的標頭檔案作了extern“C”處理,所以我們可以用#include 直接引用這些標頭檔案。