4.7.3 预处理器指示#define、#ifdef和#endif
预处理器指示#define可以用来创建编译时标记。你有两种选择:你可以简单地告诉预处理器这个标记被定义,但不指定特定的值:
或者给它一个值(这是典型的定义常数的C方法):
无论哪种情况,预处理器都能测试该标记,检查它是否已经被定义:
这将得到一个真值,#ifdef后面的代码将包含在发送给编译器的包中。当预处理器遇到语句
或
时包含终止。
在同一行中,#endif之后无注释是不合规定的,尽管一些编译器可以接受这样的行。#ifdef/#endif对可以相互嵌套。
define的反意是#undef(“un-define”的简写),它将使得使用相同变量的#ifdef语句得到假值。#undef还引起预处理器停止使用宏。#ifdef的反意是#ifndef,如果标记还没有定义,它得到真值(这是在头文件中使用的一种指示)。
在C预处理器中还有其他有用的特性,因此我们还应当检查我们文档中的全部设置。