C语言如何调⽤编译后的函数?

时间:2024-04-13 20:48:01

一、问题

        在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函数的可⽤性。