条件编译

什么是条件编译?

  • 预处理程序提供了条件编译的功能,可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件,这对于程序的移植和调试是很有用的。同时也可以用于头文件的编译控制,防止在复杂包含关系下同一头文件多次包含,以及避免一些不必要的错误发生。

条件编译指令

指令 作用
#if 编译预处理条件指令,类似if
#ifdef 判断某个宏是否已经被定义
#ifndef 判断某个宏是否未被定义
#elif 若前面条件不满足时,则判断新的条件,类似else if
#else 若前面条件都不满足时,则执行后面的语句,类似else
#endif #if,#ifdef,#ifndef的结束标志

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
// 调整EXO_DEX宏定义,编译运行得到不同结果
// #define EXO_DEX

int main(){
#ifdef EXO_DEX
printf("YES \n");
#endif
#ifndef EXO_DEX
printf("NO \n");
#endif
system("Pause");
return 0;
}

运行结果

  • EXO_DEX已被定义

YES
请按任意键继续. . .

  • EXO_DEX未被定义

NO
请按任意键继续. . .