extern "C"理解

       在C++中引用C编译器编译过的函数的时候就会用到:extern "C"这个关键字.如下就是在C++环境中引用C

函数的例子:

***************************************************Begin*******************************************************

 /* c语言头文件:cExample.h */

 #ifndef C_EXAMPLE_H

#define C_EXAMPLE_H

extern int add(int x,int y);

#endif

/* c语言实现文件:cExample.c */

#i nclude "cExample.h"

int add( int x, int y )

{

       return x + y;

}

// c++实现文件,调用add:cppFile.cpp

extern "C"

{

#i nclude "cExample.h"

}

int main(int argc, char* argv[])

{

       add(2,3);

       return 0;

}

如果C++调用一个C语言编写的.DLL时,当包括.DLL的头文件或声明接口函数时,应加extern "C" { }。
 

***************************************************End*********************************************************

     造成这种现象的原因是C语言和C++的编译器不同,众所周知,C++支持函数重栽,C不支持函数重栽,而经过

编译的函数名称是唯一的,为了适应这种需求,C++编译器会在函数名中加入一些新的信息,比如同样对 int Test()

函数进行编译,C生成的新名称是_test,而C++编译器生成的新名称是_Test_int.

   基于这种原因,在进行C和C++混合编程的时候,一定要加上extern "C",通过C编译器的方式编译引用文件,从而

找到你要调用的函数,否则编译出错.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值