学科分类
目录
C语言

#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的值。

点击此处
隐藏目录