Qter 发表于 2023-10-29 12:34:36

C++中的pch文件

本帖最后由 Qter 于 2023-10-29 12:39 编辑

参考链接:https://www.youtube.com/watch?v= ... dqGD0S4FFb&index=72

PCH全称为:Pre-compiled Header,被预先编译过的头文件,对于比较大型的工程,往往编译时间会很久,通过使用PCH,把那些不经常发生改动的头文件都预先编译出来,就可以大大节省实际使用时候的编译时间。

实际应用中,还经常把外部调用的API的头文件编译为PCH,比如调用STL、调用Windows的APIwindows.h等等

使用PCH的缺点:会减弱文件间的关联性
举个例子,原本我有一个cpp,包含了#include <windows.h>,然后我把这些自己不会改的api的头文件放到PCH里,那么之后我再看这个代码,我就不知道这个cpp具体包含了哪些头文件了,我只知道它用到了PCH,但是不能一眼就看出来它包含了头文件windows.h

如何在VS2017中使用pch
举个例子,我们创建一个简单的C++工程,创建三个简单的源文件,均使用一个对应的头文件,如下图所示:


代码如下所示:

===== 头文件如下 ======
#pragma once
#include<vector>
#include<map>
#include<set>
#include<string>
#include<array>
#include<stack>

#include<windows.h>

===== Source ======
#include "Header.h"

void main()
{      
}

===== Source1 ======
#include "Header.h"

===== Source2 ======
#include "Header.h"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
通过VS2017的tool选项中的VC++ Project Settings中设置显示build项目的时长,
可以看到直接build该项目用时如下:

第一次build用时1902ms



接下来我们将该Header.h文件改成pch文件,为此,需要添加一个对应的cpp文件,用来进行pch处理,如下图所示:


再对该pch文件点击右键,选择属性,将其Precompiled Header属性设置为Create,如下图所示:

然后进入整个项目的属性界面,如下图设置对应参数:

然后我们再进行Build,这时的build时长如下所示,相较于之前的1903ms,减少了400多ms,而且这个差距会伴随着头文件引用次数的增多变得更大:

如果我们更改Main函数后进行Build,会发现用时大大减少,因为此时头文件已经被预先编译好了:

————————————————
版权声明:本文为CSDN博主「弹吉他的小刘鸭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/alexhu2010q/article/details/105957780


页: [1]
查看完整版本: C++中的pch文件