參考這個網站的:
http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html
在c++的程式內,使用C++標準函式庫,需要標明namespace:
#include <>; //cstdioint main(){...std::printf(...);...}
在c++的程式內,使用C標準函式庫,用法跟c一樣:
#include <> //stdio.hint main(){...printf(...);...}
在c++的程式內,使用C函式庫:
extern "C" {#include "" //my-header.h}int main(){...my_func(...);...}
------------------------------//my-header.h#ifdef __cplusplusextern "C" {#endifmy-function(...);#ifdef __cplusplus}#endif------------------------------//main.cpp#include "" //my-header.hint main(){...my_func(...);...}------------------------------
若不想要include my-header.h,只要使用某幾個c function,可以直接宣告完整的prototype
//main.cpp
extern "C" my_func(int a, int b, int c);
or
//main.cppextern "C" {my_func1(int a, int b, int c);my_func2(int a, int b, int c);my_func3(int a, int b, int c);}
用到時直接用
//main.cpp
my_func1(...);
若要讓c程式call到c的某個function, 使用extern "C"可以使complier將此function給linker的資訊使用c的格式
//my.cppextern "C" my_cpp_func(int a, int b);my_cpp_func(int a, int b){...}
沒有留言:
張貼留言