C语言条件编译分析实例
还有一种形式,就是#if 后面跟一个表达式,而不是一个简单的标识符:
#if 表达式
程序段1
#else
程序段2
#endif
它的作用是:当指定的表达式为真(非零)时就编译程序段1,否则编译程序段2.可以事先给定一定条件,使程序在不同的条件下执行不同的功能。例如:
#include
#define LETTER 1
int main (void)
{
#if LETTER
printf ("111\n");
#else
printf ("222\n");
#endif
return 0;
}
输出结果:
111
这种形式也可以用作注释用:#if 1 和 #if 0
#include
int main (void)
{
#if 0
printf ("111\n");
#endif
printf ("222\n");
return 0;
}
输出结果:
222
最后一种形式
#if 标识符
#elif
程序段1
#elfi
程序段2
。。。
#else
程序段n
#endif
#if...#elif(任意多次)...#else...#endif,以上结构可以从任意逻辑表达式选择一组编译,这种结构可以根据任意逻辑表达式进行选择。
/*
条件编译演示
*/
#include
#define SAN
int main()
{
#if defined(YI) //布尔值
printf("1\n");
#elif defined(ER) //布尔值
printf("2\n");
#elif defined(SAN)
printf("3\n");
#else
printf("4\n");
#endif
return 0;
}
输出结果:
3
这里,define是一个预处理运算符。如果 define 的参数已用#define定义过,那么define返回1,否则返回 0 。这种方法的优点在于它可以和#elif一起使用。
应用示例:
我们主要使用以下几种方法,假设我们已在程序首部定义:
#define DEBUG
#define TEST