预编译的头文件

lit*_*tuk 7 precompiled-headers

预编译头文件究竟是什么?他们什么时候用的?

pax*_*blo 7

预编译头是编译过程中使用的优化.

基本上,如果你编译类似于stdio.h完全相同的定义和环境的东西,你可以安全地假设每次结果都是相同的.

因此编译器会记住该标头的"已编译"版本,因此不必再次执行此操作.

实际上,如果每个源文件都以以下内容开头,那么它往往是最初的标题组,因此会产生差异.

#define XYZZY 42
#include <stdio.h>
#include <stdlib.h>
Run Code Online (Sandbox Code Playgroud)

第一个完全编译,但记住紧接第三行之后的状态.下一个可以完全抛弃这三行并加载保存的状态,然后继续编译文件的其余部分.

我第一次看到这个功能是在Windows上有它的大量 windows.h头文件,相信我,它对整体构建时间产生了很大的影响.