C++ 语言链接性之extern

一、概念分析

链接程序要求每个不同的函数都 有不同的符号名。在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  显式地指出

猜你喜欢

转载自blog.csdn.net/banzhuantuqiang/article/details/130958896