C 语言 - 预处理器
C 预处理器(Preprocessor)不是编译器的一部分,而是编译过程中的一个单独步骤。简单来说,C 预处理器只是一个文本替换工具,它指示编译器在实际编译之前进行所需的预处理。
在 C 语言中,所有预处理器命令(Directive)均以井号(#)开头。它必须是第一个非空白字符,换句话说,预处理器指令 # 前面可以有空白符,但是为了可读性,不建议在 # 前面添加空白符。
下表列出了 C 语言中常见且重要的预处理器指令。
| 序号 | 指令 | 说明 |
|---|---|---|
| 1 | #define | 替代预处理器宏,或者叫“宏定义”。 |
| 2 | #include | 引入一个头文件。 |
| 3 | #undef | 取消定义预处理器宏。 |
| 4 | #ifdef | 如果定义了该宏,则返回 true。 |
| 5 | #ifndef | 如果未定义该宏,则返回 true。 |
| 6 | #if | 测试编译时条件是否为真。 |
| 7 | #else | #if 条件的另一个分支。 |
| 8 | #elif | 相当于将 #else 和 #if 写在一条语句中。 |
| 9 | #endif | 结束 #if 预处理器。 |
| 10 | #error | 在 stderr 上打印错误消息 。 |
| 11 | #pragma | 使用标准方法向编译器发出特殊命令。 |
初识预处理器
下面通过一些简单的示例,带你了解 C 语言预处理器的常见用法。
#define MAX_ARRAY_LENGTH 20
上述指令告诉 C 预处理器在编译时将代码中的 MAX_ARRAY_LENGTH 实例替换为数字 20