C++中的pch文件

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

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

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

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

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

代码如下所示:

===== 头文件如下 ======
#pragma once
#include
#include
#include
#include
#include
#include

#include

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

void main() 
{	
}

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

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

通过VS2017的tool选项中的VC++ Project Settings中设置显示build项目的时长,可以看到直接build该项目用时如下:

第一次build用时1902ms

在这里插入图片描述

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

再对该pch文件点击右键,选择属性,将其Precompiled Header属性设置为Create,如下图所示:
C++中的pch文件_第3张图片
然后进入整个项目的属性界面,如下图设置对应参数:
C++中的pch文件_第4张图片
然后我们再进行Build,这时的build时长如下所示,相较于之前的1903ms,减少了400多ms,而且这个差距会伴随着头文件引用次数的增多变得更大:
C++中的pch文件_第5张图片
如果我们更改Main函数后进行Build,会发现用时大大减少,因为此时头文件已经被预先编译好了:
C++中的pch文件_第6张图片

你可能感兴趣的:(C++)