我们知道,C++编译器和C语言编译器生成符号的规则是不同的,C语言编译器生成符号的依据是函数名,而C++编译器生成符号是由函数名和参数列表共同决定。那么C++编译器怎么生成C语言符号呢?就是把代码括在 extern C中。
代码如下:
extern “C”
{
int sum (int a,int b);
}
int main()
{
sum(10,20);
return 0;
}
我们上述代码是用C语言规范写的,我们不加extern这个关键字,编译器默认就是C++的sum符号。可以视为 sum_int_int,于是链接失败,所以一定要加这个关键字,告诉编译器去找C规则的sum符号。