c语言中cplusplus用法,ifdefine __cplusplus extern c{}的作用 (转载)

本文介绍了C++代码中使用`#ifdef __cplusplus`和`extern "C"`的原因和作用,主要是为了解决C++与C语言之间的互调用问题。`__cplusplus`是C++编译器特有的宏,`extern "C"`用于告诉编译器按照C语言的规则处理函数,以避免因C++的函数重载导致的命名冲突。在C++库供C语言调用时,需要在头文件和源文件中都使用`extern "C"`。
摘要由CSDN通过智能技术生成

转载:http://blog.csdn.net/miyunhong/article/details/4589541

(一)

时常在cpp的代码之中看到这样的代码:

#ifdef __cplusplus //c++编译环境中才会定义__cplusplus (plus就是"+"的意思)

extern "C" { //告诉编译器下面的函数是C语言函数(因为c++和c语言对函数的编译转换不一样,主要是c++中存在重载)

#endif

//一段代码

#ifdef __cplusplus

}

#endif

这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern "C"{和}处理其中的代码。

要明白为何使用extern "C",还得从cpp中对函数的重载处理开始说起。在c++中,为了支持重载机制,在编译生成的汇编码中,要对函数的名字进行一些处理,加入比如函数的返回类型等等.而在C中,只是简单的函数名字而已,不会加入其他的信息.也就是说:C++和C对产生的函数名字的处理是不一样的. 目的就是主要实现C与C++的相互调用问题。

c.h的实现

#ifndef _c_h_

#define _c_h_

#ifdef __cplusplus

extern "C" {

#endi

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值