提问人:Lee Tim Fu 提问时间:1/10/2019 最后编辑:P.WLee Tim Fu 更新时间:2/9/2019 访问量:67930
什么是“pch.h”,为什么需要将其作为第一个头文件包含在内?
What is "pch.h" and why is it needed to be included as the first header file?
问:
#include "pch.h"
#include <stdio.h>
#include <string.h>
什么是“pch.h”?为什么需要将其作为第一个头文件包含在内?
答:
42赞
P.W
1/10/2019
#1
PCH 代表 预编译标头。
在计算机编程中,预编译头文件是(C 或 C++)头文件,它被编译为编译器处理速度更快的中间形式。使用预编译头文件可以显著减少编译时间,尤其是在应用于大型头文件、包含许多其他头文件的头文件或包含在许多翻译单元中的头文件时。
为了减少编译时间,某些编译器允许将头文件编译为编译器处理速度更快的形式。这种中间形式被称为预编译头文件,通常保存在扩展名为 .pch 或类似名称的文件中,例如 GNU 编译器集合下的 .gch。
在 Visual Studio 中,预编译标头通常命名为“pch.h”(对于基于控制台的应用程序),但也可以使用不同的名称,或者根本不使用它。哪个文件是预编译标头(如果有)由项目设置决定。
如果预编译的头文件是“pch.h”,编译选项是 /Yu
,则 Visual Studio 不会编译源文件中 之前的任何内容;它假定源代码中的所有代码都已编译,包括该行。#include "pch.h"
评论
14赞
pixel
9/15/2020
pch.h 适用于 VS20109 及更高版本。对于 2017 及更早版本,该文件称为 stdafx.h。查看 learn.microsoft.com/en-us/cpp/build/...
0赞
Thomas Weller
12/16/2022
因此,如果 pch.h 包含 <string>并且我希望 <string> 在我的.cpp文件中可见,我可以先包含 <string>,然后再包含 pch.h,这与Microsoft的建议完全相反。或者我仍然会首先包含 pch.h,因为一旦<字符串>中的 #pragma 无论如何都会阻止它被包含?
评论