跳到主要内容

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