C/C++ 混合编译 C++中的extern “C”
-
gcc
编译*.c
和*.cpp
文件依据各自的文件类型各自编译为C
型目标文件和C++
类型目标文件 -
g++
编译*.c\*.cpp
文件,都是编译为C++类型的目标文件 -
使用
g++
时,不论是*.c
还是*.cpp
都将链接std c++
库。而gcc
是依据各自文件类型链接相应的std c
库或者是std c++
库
当一个程序有通过g++编译的C++目标模块与通过gcc编译的C目标模块时,链接会报错。案例如下:
test.c
int sum(int a,int b){
return a + b;
}
main.cpp
#include <iostream>
using namespace std;
int sum(int a,int b);
int main(){
int a = 10;
int b = 20;
cout << sum(a,b) << endl;
}