C++和C的程序互相调用要使用 extern “C“

C和C++函数编译方式是不同的

为什么C和C++函数编译方式是不同的呢?以这个函数为例子:void add( int x, int y );

在C语言中,函数是不允许重载的,每个函数名字都是独一无二的,所以我们编译的时候,可以直接用函数的名字唯一标识这个函数(类似于_add这样的符号);
而在C++中,函数可以重载,但是重载函数的名字是相同的,所以不能只用函数名标识函数,而必须增加额外信息来加以区分不同的重载函数,如例子函数的符号为 _add_int_int ,这样的名字包含了函数名、函数参数的数量及类型信息,C++靠这些额外的信息就可以根据参数的不同实现函数的重载。

extern “C”

由于C语言和C++语言的函数编译方式不同,如果我们直接在C++程序中调用C函数(或者反之),会发生编译错误。

这个时候,就要使用extern “C”来说明。

extern "C"的作用是:告诉C++编译器件括号里的所有是按照C的obj文件格式编译的,要连接的话按照C的命名规则去找。

具体使用方式例子:

https://blog.csdn.net/shuizhizhiyin/article/details/51271897

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值