precompiled-headers - 预编译头

标签 precompiled-headers

预编译头到底是什么?它们什么时候使用?

最佳答案

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

基本上,如果你编译类似 stdio.h 的东西使用完全相同的定义和环境,您可以放心地假设每次结果都相同。

因此,编译器会记住该 header 的“已编译”版本,因此不必再次执行此操作。

实际上,如果您的每个源文件都以以下开头,则往往是最初的一组 header 产生差异:

#define XYZZY 42
#include <stdio.h>
#include <stdlib.h>

第一个完全编译但记住紧跟在第三行之后的状态。下一个可以简单地完全丢弃这三行并在继续编译文件的其余部分之前加载保存的状态。

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

关于precompiled-headers - 预编译头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4954167/

相关文章:

c++ - 需要对#pragma once 做一些澄清

c++ - 如何使用两个预编译头文件。一种用于托管代码,另一种用于非托管代码。 xxx.pch 不是有效的预编译头文件

c++ - C3859 : Virtual memory range for PCH exceeded

c++ - 如何在 ubuntu 20.04 中预编译 <bits/stdc++.h> 头文件?

g++ - 为什么g++找不到-I include-path中的预编译头?

visual-studio - 在预编译头文件中包含 resource.h 是个好主意吗?

c++ - stdafx.h 的目的

C++ 我必须为每个源文件包含标准库吗?

c++ - 强制CMake重建预编译的头文件

c++ - 单独的类文件错误?