#ifndef __cplusplus的意思?

本文介绍了在C语言下遇到的max宏未定义问题,以及解决这个问题时发现的__cplusplus预编译宏。这个宏用于标识当前环境是否为C++编译器,只有在C++环境下,它才会被定义。通过理解这个预编译指令,可以实现代码的编译器兼容性处理。

  今天师弟问我C语言下怎么没有max函数,我记得是有max宏的,直接写这个宏的话,编译会出现没有定义的错误,问题应该是没有包含该宏定义的头文件,头文件为stdlib.h,奇怪的是包含该头文件后,编译还是出错,我所有的开发工具是VC6.0.我定位到该宏所在的头文件代码,代码如下:

   1:  #ifndef __cplusplus
   2:  #define max(a,b)    (((a) > (b)) ? (a) : (b))
   3:  #define min(a,b)    (((a) < (b)) ? (a) : (b))
   4:  #endif

  虽然对这预编译语句有些模糊,但是大概知道了,应该是考虑兼容性的问题,如果是c++编译器的话,那么该宏就没有定义,也就是说,只有在C编译器下,该宏才被包含进来,这也正是__cplusplus的意义,该词表明,当前环境使用的是C++编译器。

   #ifndef  __cplusplus

   #endif

   表示,如果不是C++编译器的话(即没有定义__cplusplus 这个宏的时候),才定义中间的max宏。后来我们建立了一个.c文件,对该文件编译,能通过,这也证明了我们的猜想是正确的。

  由此可见,预编译指令,可以根据编译器的不同执行不同的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值