#ifndef __INCvxWorksh #define __INCvxWorksh #ifdef __cplusplus extern "C" { #endif /*...*/ #ifdef __cplusplus } #endif #endif /* __INCvxWorksh */
#ifndef __INCvxWorksh #define __INCvxWorksh
編譯宏的作用是爲了防止重複引用。C++支持函數重載。C作爲過程語言並不支持函數重載。這是因爲編譯後C和C++的名字不同。假設某函數爲void foo(int ,int)
C編譯後爲_foo,C++編譯後爲_foo_int_int,C++ 就是靠這個機制來實現重載的。爲了實現C和C++的混合編程。C++提供了C++ 鏈接交換制定符號extern"C"來解決名字匹配問題。函數聲明錢加上extern"C"後
編譯器就會按照C 語言的方式進行編譯_foo,這樣C語言就可以調用C++ 的函數了。