在 Visual Studio 中创建新项目时,会在项目中添加一个名为 pch.h 的“预编译标头文件”。 (在 Visual Studio 2017 及更高版本中,该文件名为 stdafx.h)此文件的目的是加快生成过程。 应在此处包含任何稳定的标头文件,例如标准库标头(如 )。 预编译标头仅在它或它包含的任何文件发生更改时进行编辑。 如果只在项目源代码中进行更改,则生成将跳过对预编译标头的编译。
pch.h、pch.hpp、stdafx.h是等价的,甚至你可以在项目中修改为自定义文件名。
实际应用中,还经常把外部调用的API的头文件编译为PCH,比如调用STL、调用Windows的API windows.h等等。
可以在vs中: 选中某个project - 右键 - 属性 - c/c++ - 预编译头 - 预编译头文件,这个选项看到文件名
在当前项目中所有cpp文件的第一行都要包含预编译头文件,也就是该头文件是第一个被包含的:#include "pch.hpp"
这是使用预编译头的硬性规定,假如不遵守这个规定,编译会失败,报错如下:
fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?
重复地在所有源文件中添加预编译头文件很繁琐,所幸的是Visual C++提供了强制在所有源文件中包含指定头文件的选项,方法如下:选中 项目 - 右键 - 属C/C++ — 高级 - 强制包含文件 ,选项添加“预编译头文件”即可,如下图所示
注意,在预编译头文件之后再重复包含该文件内已包含的头文件并不会有问题,所以不必特意去掉那些重复的包含语句
在【属性 - c/c++ - 预编译头 - 预编译头文件】可以设置.pch文件的路径,一般会在obj目录下生成一个projectname.pch文件。
由于.pch文件具有大量的符号信息,它是你的工程文件里最大的文件。
如果你的磁盘空间有限,可以在生成事件中将.pch文件删除。执行程序时并不需要它们
在vs的设置中指定了pch.hpp,项目中实际也可以不存在
选中pch.cpp 右键属性 - c/c++ - 预编译头,可以看到它的选项是【创建】,而其它cpp文件是【使用】
手机扫一扫
移动阅读更方便
你可能感兴趣的文章