extern c 是什么意思?

本文解释了C++中extern C的含义及其用途。它用于确保DLL接口函数的名称与C编译器生成的符号一致,从而允许跨语言调用。文章还详细介绍了其在C++编译环境下如何避免名称修饰的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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" 的作用就是使得函数的定义名称和导出名称一致。
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值