预处理命令
源程序中以#开头的行称为预处理指令。
预处理指令并不是C语言的语法成分,而是传给编译程序的指令。
包括:
宏定义
#define
#undef
文件包含
#include
条件编译
#if
#ifdef
#else
#elif
#endif
其他
#line
#error
#pragma
我们在之前的文章写过宏定义和文件包含的笔记,现在我们学习一下条件编译。
条件编译
一般情况下,源程序中所有的语句都参加编译,但有时也希望根据一定的条件去编译源程序的不同部分,这就是条件编译。
条件编译的作用就是使得同一个源程序在不同编译条件下会得到不同的目标代码。
1.#if···#endif
代码语言:javascript复制#if 条件1
程序1
#elif 条件2
程序2
·
·
·
#else
程序n
#endif
如果条件1为真就编译程序1,条件2为真就编译程序2,都不为真就编译程序n。
说明:
elif是else if的意思,但不能写成else if。
#elif和#else可以没有,但endif必须有,它是#if命令的结尾。
#elif可以有多个。
条件可以不加括号。
2.#ifdef···#endif
代码语言:javascript复制#ifdef 宏名
程序1
#else
程序2
#endif
如果这个宏已经被定义了,那么编译程序1,否则编译程序2。
3.#ifndef···#endif
代码语言:javascript复制#ifndef 宏名
程序1
#else
程序2
#endif
如果这个宏没有被定义,那么编译程序1,否则编译程序2。