0

0

c++中的PCH(预编译头)是什么,怎么用_c++预编译头文件PCH作用与配置方法

穿越時空

穿越時空

发布时间:2025-10-24 21:36:02

|

854人浏览过

|

来源于php中文网

原创

预编译头通过预先编译常用头文件提升编译效率,适用于稳定且频繁引用的头文件。在 Visual Studio 中需创建 pch.h 和 pch.cpp,分别设置“创建”和“使用”预编译头选项,其他源文件必须首先包含 pch.h;GCC/Clang 则通过 g++ -x c++-header 生成 .gch 文件,编译时自动优先加载。使用时应避免包含易变头文件,注意编译选项一致性,并在清理构建时删除预编译文件。CMake 可用 target_precompile_headers() 简化管理。合理配置可显著缩短大型项目构建时间。

c++中的pch(预编译头)是什么,怎么用_c++预编译头文件pch作用与配置方法

预编译头(Precompiled Header,简称 PCH)是 C++ 编译优化技术之一,主要用来加快大型项目的编译速度。它的核心思想是:将那些频繁包含且不常变动的头文件预先编译成二进制格式,后续编译源文件时直接加载这个结果,避免重复解析和编译相同的头文件内容。

预编译头的作用

提升编译效率:在大型项目中,像 iostreamvector、MFC 或 Qt 的头文件经常被多个 .cpp 文件包含。每次编译都要重新处理这些庞大的头文件,非常耗时。使用 PCH 后,这些公共头只需编译一次。

减少重复工作:编译器不再需要反复解析标准库或第三方库的声明,显著缩短整体构建时间。

适用于稳定头文件:适合那些几乎不变、被广泛引用的头文件,如项目通用配置、基础库接口等。

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

如何使用预编译头

以 Visual Studio 和 GCC/Clang 为例说明配置方法。

Visual Studio 中的配置(Windows 平台)

1. 创建一个专门用于预编译的头文件,通常命名为 stdafx.hpch.h

// pch.h
#pragma once

#include stream>
#include
#include
// 添加其他常用头文件

2. 创建对应的源文件 pch.cpp,并包含该头文件:

// pch.cpp
#include "pch.h"
// 空文件即可,用于生成 PCH

3. 在项目设置中启用预编译头:

  • 右键 pch.cpp → 属性 → C/C++ → 预编译头 → 设置为“创建预编译头 (/Yc)”
  • 其他所有 .cpp 文件 → 属性 → C/C++ → 预编译头 → 设置为“使用预编译头 (/Yu)”
  • 指定预编译头文件名(如 pch.h)

4. 每个源文件的第一行必须包含 pch.h:

#include "pch.h" // 必须是第一个 include

GCC / Clang 中的使用方法(Linux/macOS)

GCC 和 Clang 支持通过 .gch 文件实现预编译头。

1. 编写公共头文件 common.h

AGI-Eval评测社区
AGI-Eval评测社区

AI大模型评测社区

下载
// common.h
#include
#include
#include

2. 预先编译它:

g++ -x c++-header common.h -o common.h.gch

这会生成 common.h.gch 文件。

3. 正常编译源文件时,只要包含 common.h,编译器会自动优先使用 .gch 文件:

g++ main.cpp -o main

注意:-x c++-header 告诉 GCC 将文件当作 C++ 头文件处理;.gch 文件权限需允许读取;若存在多个匹配的 .gch,选最优者。

使用建议与注意事项

• 把最常用、最稳定的头文件放进预编译头,不要包含易变的本地头文件。

• 所有使用 PCH 的源文件必须以 #include "pch.h" 开头,否则可能导致编译错误或 PCH 失效。

• 不同编译选项下生成的 PCH 不通用。改变宏定义、语言标准等需重新生成。

• 清理构建时记得删除 .pch 或 .gch 文件,防止旧缓存影响结果。

• CMake 可通过 target_precompile_headers() 管理 PCH(CMake 3.16+):

target_precompile_headers(myapp PRIVATE common.h)

基本上就这些。合理使用 PCH 能显著提升大项目编译速度,关键是选对头文件,并正确配置编译流程。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
视频后缀名都有哪些
视频后缀名都有哪些

视频后缀名都有avi、mpg、mpeg、rm、rmvb、flv、wmv、mov、mkv、ASF、M1V、M2V、MPE、QT、VOB、RA、RMJ、RMS、RAM、等等。更多关于视频后缀名的相关知识,详情请看本专题下面的文章,php中文网欢迎大家前来学习。

3533

2023.10.31

C++ Qt图形开发
C++ Qt图形开发

本专题专注于 C++ Qt框架在图形界面开发中的应用,系统讲解窗口设计、信号与槽机制、界面布局、事件处理、数据库连接与跨平台打包等核心技能,通过多个桌面应用项目实战,帮助学员快速掌握 Qt 框架并独立完成跨平台GUI软件的开发。

68

2025.08.15

C++ 图形界面开发基础(Qt方向)
C++ 图形界面开发基础(Qt方向)

本专题系统讲解 使用 C++ 与 Qt 进行图形界面(GUI)开发的核心技能,内容涵盖 Qt 项目结构、窗口组件、信号与槽机制、事件处理、布局管理、资源管理,以及跨平台编译与打包流程。通过多个小型桌面应用实战案例,帮助学习者掌握从界面设计到功能实现的完整 GUI 开发能力。

77

2025.12.05

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

463

2023.08.02

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1130

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

213

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1727

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

20

2026.01.19

clawdbot ai使用教程 保姆级clawdbot部署安装手册
clawdbot ai使用教程 保姆级clawdbot部署安装手册

Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

11

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8万人学习

Git 教程
Git 教程

共21课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号