首页 > 代码库 > extern关键字总结
extern关键字总结
时间:2014.06.04
地点:基地
--------------------------------------------------------------------
一、extern 变量和extern 函数
在这两种场合下,extern是用来说明变量或者函数的定义存在于其它源文件里,在这里只是声明,我们知道,变量或者函数是可以有多个声明的,但不可以有多个定义,以这种方式而不是用#include的方式来引用其它文件中的函数,在链接时,连接器会在各个模块中搜索这个变量或者函数形成最终的链接,以形成合理的需求。--------------------------------------------------------------------
二、extern "C"
在C++程序需要调用C程序时,此时编译过程中常发生编译器找不到C函数的问题,导致链接失败,于是引用extern "C"这样的方式,以解决这种链接失败的问题。我们知道,C++语言中有函数重载,所以比如g++在安装C++在编译时,不会直接使用程序中书写的函数名称,而会使用一种特殊的方法经过中间变换生成一个全局唯一的函数名,而C函数在编译时是没有经过函数名称变换得来的,当在C++中使用经过变换的函数名称去调用没有经过变换过的函数时,会出现链接失败。C++编译过程中,函数名称的转换称为“函数的特殊处理”,比如将函数名称和参数联合起来生成一个中间的函数名称。而C语言不会,因此会造成链接时找不到对应函数的情况,此时C函数就需要使用extern "C"进行链接指定了,用来告诉编译器,这是一个C写成的库文件,要用C的方式来链接它。即带extern "C"的代码在处理函数名称时,直接使用函数名称,不会去采用特别的方法生成中间函数名称,所以C++在使用C函数时,加上extern “C”才能正确的找到指定的函数。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。