extern “C”修饰的变量和函数是按照c的方式编译的
如果想用c++方式编译c代码,需要特殊标识
方法
#if defined(__cplusplus) || defined(c_plusplus)
extern "C"{
#endif
...
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
举例
void func(int a, char b, float c){}
# g++ *.cpp -S
# cat *.s
.file "*.cpp"
.text
.globl _Z4funcicf //func+int+char+float
.type _Z4funcicf, @function
#if defined(__cplusplus) || defined(c_plusplus)
extern "C"{
#endif
void func(int a, char b, float c){}
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
# g++ *.cpp -S
# cat *.s
.file "*.cpp"
.text
.globl func
.type func, @function