一、内容
- if
- #if
- #ifdef
- #ifndef
- #if defined
- #if !defined
二、if
if是C语言中的关键字,它根据表达式的计算结果来决定是否执行该分支的语句,它的每个分支都是编译了的。
#define A 0 //把A定义为0
if (A > 1)
printf("A > 1"); //编译器编译该语句,但因为A == 0 未执行
else if(A == 1)
printf("A == 1"); //编译器编译该语句,但因为A == 0 未执行
else
printf("A < 1"); //编译器编译该语句,因为A == 0 故执行
三、#if
条件编译是C语言中预处理部分的内容,它是编译器编译代码时最先处理的部分。
条件编译里面的判断语句,包括 #if 、#else 、#elif 及 #endif;
它的意思是如果宏条件符合,编译器就编译这段代码,否则,编译器就忽略这段代码而不编译
#define A 0 //把A定义为0
#if (A > 1)
printf("A > 1"); //编译器没有编译该语句,该语句不生成汇编代码
#elif (A == 1)
printf("A == 1"); //编译器没有编译该语句,该语句不生成汇编代码
#else
printf("A < 1"); //编译器编译了这段代码,且生成了汇编代码,执行该语句
#endif
四、#ifdef / #if defined
#ifdef和#if defined()的用法一致
#ifndef和#if !defined()的用法一致
#if defined括号中是一个宏,它不管括号中的逻辑是“真”还是“假”,它只看该程序前边是否有定义这个宏,如果有,则编译该分支,若没有,则直接忽略,不编译。
另外 #if defined(x)可以取反,也就用 #if !defined(x)