extern c 是什么意思?

extern c 是什么意思?
#ifdef __cplusplus
extern "C" { //这是什么意思 ?????????????
#endif /* __cplusplus */
表示如果现在的编译环境是C++的话,让编译器生成C样式的函数名,也就是阻止编译器使用C++的方法进行函数名解析。
C++中因为函数可以重载:
int a(char)
int a(int)
int a(double)...
所以,在编译后的代码里,三个a()是不同的函数名如a_char_xxx,a_in_xxx,a_double_xxx等等.

要去掉后面的一大串符号只要在a()前面加上exter "C"即可

在DLL的对外接口函数中,必须用exter "C" 限制,否则,外部调用者根本不知道你的真正函数名.
1 VC6.0编译器可以按C++或C生成目标函数. 两者生成的目标符号表
并不一样. C方式是与原来标准C相兼容.
2 在DLL中的接口函数一般应按C方式编译而成. extern "C" 就是强
制指定. 如果不按这种方式指定.GetProcAddress(...)取出来的   
      就不对. 只能隐式连接.
extern "c" 的作用就是使得函数的定义名称和导出名称一致。
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值