可以自己制作stdfx.h文件吗?

时间:2015-12-24 05:52:59

标签: c++ precompiled-headers stdafx.h

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

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

2 个答案:

答案 0 :(得分:3)

它通常被命名为 std a fx.h ,但它确实无关紧要。您可以根据需要为预编译头命名。

你错过了最后一步。

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

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

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

虽然我在这里。要在预编译头文件中包含的内容是所有系统和C / C ++运行时头文件。 (例如<windows.h>, <stdio.h>, <string>, <map>等......)。通过包含所有这些文件,您将获得最大的收益 - 因为它们永远不会从构建更改为构建。

答案 1 :(得分:2)

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

您可以在Documentation

中详细了解预编译的标头