(C++)extern “C” 和 extern “C++”——语言链接性

extern "C" 和 extern "C++" 的区别,首先我们先认识一个概念——语言的链接性。

C语言链接性:在C语言中,一个名称只对应一个函数,因此中很容易实现。为满足内部需要,C语言编译器可能将spiff这同样的函数名翻译为_spiff。

C++语言链接性:在C++中,同一个名称可能对应多个函数,必须将这些函数翻译为不同的符号名称。因此C++编译器执行名称矫正或名称修饰,为重载函数生成不同的符号名称。
eg:
spiff(int)转换为_spiff_i
spiff(double, double)转换为_spiff_d_d;

所以为了解决在C++程序中使用C库中预编译的函数,我们可以使用extern "C" 或 extern "C++"。

extern "C" void spiff(int);    //原型使用C语言链接性
extern  void spiff(int); 或者  extern "C++" void spiff(int);    //原型使用C++语言链接性

上一篇:npx小工具


下一篇:C基础学习之C 变量