C++中的预编译头文件(PCH)是什么?(加速编译)

admin 百科 12
c++kquote>预编译头文件(PCH)是C++编译器通过预先解析稳定头文件生成二进制中间表示以加速编译的优化机制;它要求选定入口头、单独编译生成PCH、其余源文件首行包含该头,并仅纳入高频且极少变更的标准库、公共头或稳定第三方头,配置不当易引发重编译或ODR错误。

C++中的预编译头文件(PCH)是什么?(加速编译)-第1张图片-佛山资讯网

预编译头文件(Precompiled Header,简称 PCH)是 C++ 编译器提供的一种优化机制,用来加速重复包含大量头文件(尤其是标准库、第三方库等稳定不变的头)的编译过程。

为什么需要 PCH?

大型项目中,每个 .cpp 文件常以 #include iostream>#include #include "common.h" 开头。这些头文件本身可能又嵌套包含几十个其他头,每次编译都要重新解析、词法分析、语法分析——即使内容从不改变。PCH 把这部分“稳定且通用”的头文件预先处理成二进制中间表示(如 GCC 的 .gch、MSVC 的 .pch),后续编译直接加载,跳过前端耗时步骤。

怎么用 PCH?(以常见工具链为例)

关键不是“写一个头”,而是“约定+配置”:

  • 选一个头文件作为 PCH 入口:比如 StdAfx.h(MSVC 习惯)或 pch.h(跨平台常用),里面集中包含所有项目中高频、不变、不常修改的头
  • 先单独编译它生成 PCH 文件:例如 MSVC 中设置该文件属性为“创建预编译头”;Clang/GCC 用 -x c++-header 参数
  • 其余 .cpp 文件开头必须第一行是 #include "pch.h"(MSVC 要求严格;Clang/GCC 可配 -include pch.h 绕过位置限制)
  • 编译器自动识别并复用已生成的 PCH:只要头内容或编译选项(如宏定义、语言标准)没变,就跳过重编译

哪些头适合放进 PCH?

目标是“高频率引入 + 极少改动”:

立即学习“C++免费学习笔记(深入)”;

标签: 前端 工具 c++ ios stream 标准库 为什么

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~