我可以在Visual Studio C++中使用 #include "pch.h" 而不是 #include "stdafx.h" 作为我的预编译头吗?

Can I use #include "pch.h" instead of #include "stdafx.h" as my precompile header in Visual Studio C++?

本文关键字:#include 我的 stdafx 编译 C++ Visual 我可以 pch Studio      更新时间:2023-10-16

这是我第一次与C++一起工作并正确进入编码。我正在按照 learncpp.com C++教程进行操作,并且正在使用Visual Studio 2017...

在本教程中,他们从一些简单的"Hello,world!"代码开始,并在代码的顶部#include "stdafx.h"#include <iostream>一起放置。当我自己复制此代码并尝试构建它时,出现错误:

C1010:查找预编译标头时文件意外结束。您是否忘记将 #include"pch.h"添加到您的来源中?

在查看我的解决方案资源管理器时,我注意到在标题和源文件选项卡的教程中,他们有名为"stdafx.h"和"stdafx.cpp"的文件,但对我来说,这些文件称为"pch.h"和"pch.cpp"。

因此,我随后尝试将#include "stdafx.h"重命名为#include "pch.h",代码构建并完美执行。那么我应该在其余代码中坚持使用#include "pch.h"还是某种问题?

谢谢!

几年来,默认的预编译标头名称是 stdafx.h。最近,在VS 2017中,他们将项目向导创建的默认名称更改为pch.h。我不知道为什么,但他们做到了。

可以在"项目属性"中的"配置属性"->"C/C++"->"预编译头"下调整预编译头文件的名称。您还可以在此处启用或禁用它们的使用。您甚至可以基于每个文件定义它。您甚至可以在一个项目中配置多个不同的预编译头文件。

所以对于您的具体问题:在您的教程中将 stdafx.h 替换为 pch.h 不会有任何问题。本教程可能只是较旧,尚未更新。

尝试将"#include pch.h"移动到文件的最顶部(在任何其他标头之前(。

默认情况下,某些编译器不会在预编译头文件之前编译内容。不过,可以更改此设置。

在 learncpp.com 教程中,讲师建议我们在Visual Studio上使用Windows桌面向导选项创建新的C++项目时关闭"预编译头"附加选项。在我们还没有被介绍到头文件的时候这样做是个好主意。

但是,pch.h 似乎是"新的"stdafx.h,所以并不是说您可以使用前者而不是后者,而是您必须这样做,至少如果选择"预编译头"选项。