重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
extern "c"的主要作用就是为了能够正确实现C++代码调用其它C语言代码。加上extern "c"后,会指示编译器这部分代码按照C语言的风格进行编译。
由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;C语言并不支持函数重载,因此编译C代码的函数时不会带上函数的参数类型,一般只包括函数名。
这个功能十分有用,因为在C++出现以前,很多代码都是C语言写的,而且底层的库也是C语言写的,为了更好的支持原来的C代码和已经写好的C语言库,需要在C++中尽可能的支持C,而extern "c"就是其中的一个策略。
这个功能主要用在下面的情况:
1、C++代码调用C语言代码
2、在C++的头文件中使用
3、在多个人协同开发时,可能会出现有人编写C代码,有人能编写C++代码,这样的情况也可以使用extern "c"。
extern "c"包含双重语义,从字面上可以知道,首先,被他修饰的目标是"extern"的;其次,被他修饰的目标代码是"C"的。被extern "c"限定的函数和变量
是extern的。
看这个例子: extern int a; 仅仅是一个变量的声明,并不是在定义变量a,也没有为a分配空间。变量a在所有模块中作为一种全局变量只能被定义一次,否则会出错。
extern "c"使用要点:
1、可以使单一语句。
extern "c" double sqrt(double)
2、可以使复合语句,相当于复合语句中的声明都加了extern "c"。
extern "c"
{
double sqrt(double);l
int min(int,int);
}
3、可以包含头文件,相当于头文件中的声明都加了extern "c"。
extern "c"
{
#include
}
4、不可以将extern "c"添加到函数内部。
5、如果函数有多个声明,可以都加extern "c",也可以只出现在第一次声明中,后面的声明会接受第一个链接指示符的规则。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。