include “*.h”來聲明函數,聲明後直接使用即可。
在C++環境下使用C函數的時候,常常會出現編譯器無法找到obj模塊中的C函數定義,從而導致鏈接失敗的情況,應該如何解決這種情況呢?
答案與分析:
C++語言在編譯的時候爲了解決函數的多態問題,會將函數名和參數聯合起來生成一箇中間的函數名稱,而C語言則不會,因此會造成鏈接時找不到對應函數的情況,此時C函數就需要用extern
“C”進行鏈接指定,這告訴編譯器,請保持我的名稱,不要給我生成用於鏈接的中間函數名。
下面是一個標準的寫法:
//在.h文件的頭上
#ifdef __cplusplus
#if __cplusplus
extern "C"{
#endif
#endif
…
…
//.h文件結束的地方
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
注意:一個文件1中 變量聲明爲 靜態 static或函數聲明爲static 時 就不可以被別的文件2 引用,別的文件2只能通過文件1中的非靜態函數 來操作 文件1中的 靜態變量
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!