浅析extern “C”的作用

本文探讨了extern "C"在C++中的作用,主要用于在C++代码中调用C函数。通过示例展示了不同文件类型(.c和.cpp)中函数名在汇编代码中的命名规则差异,并解释了extern "C"如何帮助解决C++编译器对C函数名的 mangling 问题,确保正确调用C函数。
摘要由CSDN通过智能技术生成

浅析extern “C”的作用

 

        关于extern “C”的作用和意思,网上资料已经有很多了(我也参考了几篇),不过我还是觉得有必要自己总结一下,毕竟“好记性不如烂笔头”嘛~~

        到C标准函数库的头文件里看看,一般会经常看见有如下宏定义(除非你从来没有查看类似printf函数在头文件中的定义,就另当别论了:-()

#ifdef  __cplusplus
extern "C" {
#endif
…… (C函数声明)
#ifdef  __cplusplus
}
#endif

        简单来说,这个extern“C”用于C++代码调用C的函数(至于C代码如何调用C++函数,还是问问Google大神吧~)

        先撇开上述的extern “C”,看看C函数和C++函数的汇编代码,就知道在目标文件中,C函数名和C++函数名采用不同的命名规则。

        VS2010新建一个Windows Console工程,添加一个.c和.cpp文件,文件里的代码都一样,如下

void hello()
{

}

        为了使汇编文件的内容简单一些,这里函数体是空,而且没有引入任何头文件。VS2010默认不输出.asm文件,即汇编文件。在工程的配置中,让VS2010输出汇编文件,如下

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值