所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是 C++ 的一个重要功能, 它由预处理程序负责完成。当对一个源文件进行编译时, 系统把自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。
C++ 提供了多种预处理功能,如宏定义、文件包含、 条件编译等。合理地使用预处理功能编写的程序便于阅读、修改、 移植和调试,也有利于模块化程序设计。
预处理主要是处理以 #
开头的命令,例如 #include <iostream>
等。预处理命令要放在所有 函数 之外,而且一般都放在源文件的前面。
我们在 Linux 上,使用 vim 新建一个 hellohaicoder.cpp 文件,并输入以下代码:
#include <iostream>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
return 0;
}
输入完毕后,我们使用 g++ 命令的 E 选项,实现对以上程序进行预处理,具体命令如下:
g++ -E hellohaicoder.cpp -ohellohaicoder.i
其中,g++ 是 linux 平台用来编译 C++ 程序的编译器,E 选项表明是对该程序进行预处理,o 选项是指定预处理后生成的文件名,运行完毕后,会生成 hellohaicoder.i 文件,如下图所示:
我们再次使用 vim 打开预处理后的 hellohaicoder.i 文件,如下图所示:
此时,我们可以看到,我们程序经过预处理后,源代码已经变成了一万七百多行,这是因为,预处理将我们包含的 iostream 头文件全部包含了进来。
预处理是 C++ 的一个重要功能, 它由预处理程序负责完成。当对一个源文件进行编译时, 系统把自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。