經常看到別人的頭文件 有這樣的代碼
#ifdef __cplusplus extern "C" { #endif// C 樣式 的函數 #ifdef __cplusplus } #endif
為什么要這樣呢?
因為 C 語言不支持重載函數 也就是同名函數,參數卻不一樣,C++支持,其編譯器對函數名的處理方法不一樣,導致 雖然都是C 樣式的函數,不同編譯器編譯出來的不一樣。
如果 是 C語言?編譯的中間文件,要C++ 來調用,那么就需要這個 了,C++ 有了 extern "C" 就會按照 C 語言的方法進行函數命名。這樣編譯出來的中間文件 就是C 樣式的函數名,C C++ 都可以調用。
如果 C++ 編譯的中間文件,要C語言來調用,是不行的。
?
?