C通过加"中间层"来引用C++(不用修改原C++文件)
//C文件
int MyMax(int, int);
int main()
{
int a = 10;
int b = 20;
printf("%d\n", MyMax(a,b));
return 0;
}
//C++文件
int Max(int a, int b)
{
return a > b ? a : b;
}
//中间层//C++文件
int Max(int ,int);
extern "C"
{
int MyMax(int a, int b)
{
return Max(a, b);
}
}
关键点:本文件之间的函数调用,不牵扯到函数符号的生成。比如中间层那个文件:C++格式的声明,C的引用(return Max(a,b)),不会牵扯到什么链接失败,那是发生在编译期间的,不牵扯到符号之间的解析。