#ifndef __cplusplus的意思?

  今天师弟问我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文件,对该文件编译,能通过,这也证明了我们的猜想是正确的。

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

你可能感兴趣的:(c,语言,开发工具,编译器)