0

现在,我意识到我的项目需要一个预编译的头文件。但是,一开始,我将我的项目创建为一个没有 stdfx.h 头文件的空项目。所以,这就是我所做的:
- 我创建了一个名为 stdfx.h 的头文件
- 在该文件中,我包含了一些库。
- 我去了项目属性页 -> C/C++ -> 预编译头 -> 将 PRECOMILED HEADER 选项设置为使用 (/Yu)。
- 最后,我在每个 cpp 文件中都包含了 stdfx.h。

有用。但是,我想知道我自己创建的 stdfx.h 文件是否像 Visual Studio 自动创建的那样工作?我的意思是它真的是一个预编译的头文件,可以在编译时节省时间,还是只是一个普通的头文件?

4

2 回答 2

3

它通常被命名为std a fx.h,但这并不重要。您可以随意命名您的预编译头文件。

你错过了最后一步。

您还需要创建一个 stdafx.cpp。这是一个只有#include "stdafx.h"一行的空文件。

对于这个特定文件,在解决方案资源管理器中右键单击它并选择Properties。这将打开一个属性页面,其中包含特定于该源文件的设置(默认情况下继承您的项目设置)。对于这个特定的文件,选择/Yc作为编译器选项而不是 /Yu 作为 Precompiled 设置。如果您不这样做,您可能不会观察到预编译头文件的构建速度改进。

当 Visual Studio 构建时,它将首先构建您的 stdafx.cpp 文件。与此同时,它将构建其他源文件将获取的 .pch 文件。

当我在这里的时候。包含在预编译头文件中的东西是所有系统和 C/C++ 运行时头文件。(例如<windows.h>, <stdio.h>, <string>, <map>,等等...)。通过包含所有这些文件,您将获得最大的收益——因为它们从不因构建而改变。

于 2015-12-24T06:38:51.450 回答
2

您绝对可以stdfx.h自己制作或其他预编译的头文件(名称并不重要)。但是您应该遵循MSDN中描述的一些规则。

您可以在文档中阅读有关预编译头文件的更多信息

于 2015-12-24T05:59:51.253 回答