首页 > 试题广场 >

C++调用C语言库时,需要加什么。

[问答题]
推荐
extern “C”
C++语言为了支持重构(重构的特征:相同的范围、相同的名字、不同的参数),在编译时对函数的命名方式进行了改变,编译后的名字包括一些参数的信息。extern "C"的作用,就是“提示”编译器,下面的文件和函数,要用C语言的命名规则进行。
编辑于 2015-01-12 15:43:48 回复(0)
答案:
 C++调用C的库函数时,如果头文件定义得不恰当,可能会出现明明某函数在obj文件中存在,但是却发生链接失败的情况,出现如下错误: 
  undefined reference to 'xxx'
  出现问题的原因是c库函数编译成obj文件时对函数符号的处理和C++不同。因为C++函数支持重载,所以函数符号的处理要更复杂一些,c往往不作修饰。
C++和编译器的设计者早已料到了这个问题,并提供了一种通用的解决办法:使用extern "C"来修饰旧C库的外部函数声明。extern "C"修饰内的函数,一律按照c的风格来编译,以便能够链接到用c编译出来的obj库上去。
发表于 2015-01-28 15:06:21 回复(0)
在调用的函数声明前加上extern "C",以表明需要以C语言的函数形式进行链接。
发表于 2015-01-22 10:46:12 回复(0)
extern "C"
发表于 2021-04-09 13:25:45 回复(0)

<p>Extern “c“</p>

编辑于 2020-07-09 16:16:21 回复(0)
extern "C" 
提升编译器 按照 C 的风格来
发表于 2019-10-15 16:17:01 回复(0)
extern "C"
发表于 2015-10-20 08:35:13 回复(0)


发表于 2015-07-02 08:49:23 回复(0)
extern "C"
发表于 2015-01-11 17:04:54 回复(0)