C与C++相互调用#
1.编译方式#
gcc和g++都可以编译C文件和C++文件。
-
gcc会按照C的方式去编译C文件,会按照C++的方式去编译C++文件;
-
g++会按照C++的方式去编译C文件和C++文件。
验证以上说法:
gcc -c test.c
# 查看符号表
nm test.o
B 该符号在bss段
T 该符号在text段
U 该符号未定义
man nm
# gcc不会自动链接C++库,所以需要加上
gcc -c test.cpp
# 查看符号表
nm test.o
extern "C" 是g++才有的关键字。
2. C++调用C函数#
#ifdef _cplusplus
extern "C" {
void printf();
}
#else
#endif
3. C调用C++函数#
3.1 C调用C++普通函数#
3.2 C调用C++重载函数#
使用extern "C"是要告诉编译器按照C的方式来编译封装接口,接口里面的函数还是按照c++的语法和C++方式编译。
extern "C" int add_c(int a, int b){
add(a,b);
}