一、问题
在C++程序中调⽤被 C 编译器编译后的函数,为什么要加 extern “C" ?
二、解答
1. 问题解析
外部函数就是可以被其他源⽂件调⽤的函数。定义外部函数时,使⽤关键字 extern 进⾏修饰。在使⽤⼀个外部函数时,要先⽤ extern 声明所⽤的函数是外部函数。
例如,函数头可以写成下⾯的形式。
extern int Add(int iNuml,int iNum2);
这样,函数 Add( ) 就可以被其他源⽂件调⽤进⾏加法运算。
2. 答案
C++语⾔⽀持函数重载,⽽C语⾔不⽀持函数重载。函数被 C++编译后,在库中的名称与C语⾔的不同。
假设某个函数的原型为:
void foo(int x, int y);
该函数被C编译器编译后,在库中的名称为 _foo ,⽽ C++编译器则会⽣成像 _foo_ int_ int 之类的名称。C++提供了C连接交换指定符号 extern “C”来解决名称匹配问题。
三、总结
C语⾔函数不仅仅可以被C函数调⽤,其他语⾔也可以通过⼀定的⽅式来调⽤C语⾔函数,⾜可见C函数的可⽤性。