【问题标题】:Is it OK to make a stdfx.h file myself?自己制作stdfx.h文件可以吗?
【发布时间】:2016-03-30 14:43:24
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    你错过了最后一步。

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-01-27
        • 2010-12-24
        • 1970-01-01
        • 2012-06-25
        • 1970-01-01
        • 2019-11-19
        • 2010-09-05
        • 2019-03-12
        • 1970-01-01
        相关资源
        最近更新 更多