一招教你学会C C++混编

extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。
这里举个例子:
我们实现了两个模块module1和module2.见下:
# module1.h
  #ifdef __module1_H_
  #define __module1_H_H
  #ifdef __cplusplus
  extern "C"
    {
  #endif
      int sum(int a, int b)'
      int substract(int a, int b);
  #ifdef __cplusplus
    }
  #endif
  #endif
# module1.c
 //该文件实现了sum,substract函数
然后我们可以编译:gcc module1.c  -c -o module1,这时生成了目标文件module1。
然后我们编写模块2:module2.cpp
# module2.cpp
  #include <iostream>
  #include "module1.h"
  int main()
    {
      cout<<sum(3,4)<<endl;
      cout<<substract(5,2)<<endl;
    }
因为.c文件与.cpp文件的编译机制有区别,故在目标文件module1中,虽然有sum
和substract的实现,但是如果我们没有在module1.h中使用extern "C"的话,
最后会输出会说没找到函数sum和substract的定义,而extern "C"的作用就是
让编译器按照c语言的命名机制来为函数命名,这样在module2中生成的函数
名就与module1中的函数名一样了,就不会出现函数未定义的错误了
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值