#ifdef__cplusplus主要實現C與C++的相互調用


#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() {


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM