一、概念分析
链接程序要求每个不同的函数都 有不同的符号名。在C
语言中,一个名称只对应一个函数,因此这很容易实现。为满足内部需要,C
语言编译器可能将
spiff
这样的函数名翻译 为_spiff
。这种方法被称为
C语言链接性(C language linkage
)
C++
中,同一个名称可能对应多个函数,必须将这些函数翻译为不同的 符号名称。因此,C++
编译器执行名称矫正或名称修饰
,为重载函数生成不同的符号名称。例如,可能将spiff
(int)转换 为_spoff_i
,而将
spiff
(double,
double
)转换为
_spiff_d_d
。这种方法被 称为C++
语言链接(C++ language linkage)
二、使用场景
1、C++
程序中使用
C
库中预编译的函数
extern "C" void spiff(int);// use C protocol for name look-up
2、C++程序中使用C++库中预编译的函数
方法一:extern void spoff(int);// use C++ protocol for name look-up
通过默认方式指出
方法二:extern "C++" void spaff(int);// use C++ protocol for name look-up
显式地指出