C 预处理 主要有三个方面的内容:
序号 | 描述 |
1 | 展开所有的头文件 |
2 | 宏定义的替换 |
3 | 解析条件编译 并添加到文件中 |
预处理命令 以符号"#"开头。
采用 条件编译,可以减少被编译的语句,从而减少目标的长度。当 条件编译 段比较多时,目标程序长度可以大大减少。
条件编译 主要包括:
序号 | 命令 | 含义 |
1 | #if | 编译预处理 的 条件命令,相当于C语言中的 if 语句 |
2 | #ifdef | 判断某个宏是否被定义,如果已经定义,执行随后的语句 |
3 | #ifndef | 与 #ifdef 相反,判断某个宏是否未被定义 |
4 | #elif | 若 #if , #ifdef , #ifndef 或前面的 #elif 条件不满足,则执行 #elif 之后的语句,相当于C语法中的 else-if |
5 | #else | 与 #if , #ifdef , #ifndef 对应, 若这些条件不满足,则执行 #else 之后的语句,相当于C语法中的 else |
6 | #endif | #if , #ifdef , #ifndef 这些条件命令的结束标志 |
7 | #defined | 与 #if, #elif 配合使用,判断某个宏是否被定义 |
应用举例:
#if 可支持 同时判断多个宏的存在,与 常量表达式配合使用。常用格式如下:
条件编译 中相对常用的 预编译指令。模式如下:
在 判断某个宏 是否被定义时,应当避免使用 #if ,因为该宏的值可能就是被定义为0。而应当使用 #ifdef 或 #ifndef 。