vlambda博客
学习文章列表

C语言中,#if defined(terms)的作用浅析

C语言程序中,经常见到的下面这样的写法,

#if defined(terms) 

    statements1

    statements2

    statements3

    .........

#endif 

这种表达在实际程序运行中到底起什么作用呢?下面跟着编译器来实际验证一下它在程序中所起的作用。

在编译器Dev C++中写如下测试代码:

上面代码的运行结果如下:

C语言中,#if defined(terms)的作用浅析

 从运行结果可以看到,两个printf语句都执行了。


然后将程序中#define SIZE这一行注释掉,如下图所示:

代码修改之后运行结果如下:

从第二次运行结果可以看出,把define SIZE注释掉之后,#if defined(SIZE)和#endif之间的printf语句没有运行。


从上面的验证过程可以看出,#if defined(SIZE) 和#endif是用来定义条件编译的,相当于定义了一个编译条件,满足这个条件的时候,#if   defined(SIZE) 和 #endif 之间的语句才会被编译执行。如果不满足,编译的时候这些语句就会被直接省略掉了。


代码附录如下:

#include <stdio.h>

//#define SIZE

int main(void)

{

    int a = 3;

    int b = 4;

#if defined(SIZE)

    printf("\t%d\n",a);

#endif

   printf("\t%d\n",b);

}