#ifdef
在C语言中,如果想判断某个宏是否被定义,可以使用#ifdef指令,通常情况下,该指令需要和#endif指令一起使用,#ifdef指令的语法格式如下:
#ifdef 宏名
程序段1
#else
程序段2
#endif
在上述语法格式中,#ifdef指令用于控制单独的一段源码是否需要编译,它的功能类似于一个单独的#if/#endif。
为了帮助读者更好地掌握#ifdef指令的使用,接下来通过一个案例演示如何使用#ifdef指令控制程序是否输出调试信息,如例1所示。
例1 ifdef.c
1 #include <stdio.h>
2 #define DEBUG //定义宏DEBUG
3 int main()
4 {
5 int i = 0;
6 #ifdef DEBUG
7 printf("i=%d\n", i);
8 #endif
9
10 int j = 3;
11 #ifdef DEBUG
12 printf("j = %d\n", j);
13 #endif
14
15 int sum = i + j;
16 #ifdef DEBUG
17 printf("i + j = %d\n", sum);
18 #endif
19 return 0;
20 }
例1运行结果如图1所示。
图1 例1运行结果
在例1中,第2行代码定义了宏DEBUG,用来控制是否需要输出调试信息;第5、10、15行代码,在main()函数中定义变量i、j和sum,其中sum用于计算i与j的和。第6~8行代码通过#ifdef指令判断宏DEBUG是否被定义,如果定义输出变量i的值;第11~13行代码通过#ifdef指令判断宏DEBUG是否被定义,如果定义输出变量j的值;第16~18行代码通过#ifdef指令判断宏DEBUG是否被定义,如果定义输出变量i+j的值。由于宏DEBUG已经被定义,因此,所有的printf()语句都会被编译,最终输出变量i、j和sum的值。