#ifdef__cplusplus主要實現C與C++的相互調用
主要實現C與C 的相互調用問題
c.h的實現
#ifndef _c_h_
#define _c_h_
#ifdef __cplusplus
extern /"C/" { #endif void C_fun();
#ifdef __cplusplus
}
#endif
#endif
-----------------------------------
c.c的實現 #include /"c.h/" void C_fun() { }
------------------------------------
在擦cpp.cpp中調用c.c中的C_test()
cpp.cpp的實現
#include /"c.h/"
int main()
{
C_fun()
}
其中__cplusplus是C 編譯器的保留宏定義.就是說C 編譯器認為這個宏已經定義了.
所以關鍵是extern /"C/" {} extern /"C/"是告訴C++編譯器件括號里的東東是按照C的obj文件格式編譯的,要連接的話按照C的命名規則去找.
================================
那么C中是如何調用C 中的函數cpp_fun()呢? 因為現有C后有C++ , 所以只能從C 的代碼中考慮了. 加入C 中的函數或變量有可能被C中的文件掉用,則應該這樣寫,也是用extern /"C/"{} 不過是代碼中要加,頭文件也要加,因為可能是C 中也調用
--------------------------------------
cpp.h的實現
#ifndef _c_h_
#define _c_h_
#ifdef __cplusplus
extern /"C/"
{
#endif void CPP_fun(); #ifdef __cplusplus
}
#endif
#endif
-----------------------------------------------
Cpp.cpp的實現
extern /"C/"
{ //告訴C 編譯器,擴號里按照C的命名規則編譯 void CPP_fun() {