【问题标题】:Why do i have to #include "stdafx.h" in Microsoft visual studio c++ applications?为什么我必须在 Microsoft Visual Studio C++ 应用程序中 #include "stdafx.h"?
【发布时间】:2016-02-21 04:45:09
【问题描述】:

如果我使用普通的文本编辑器或 Code::Blocks,则不会出现此问题。 但在 Visual Studio 中,我必须包含 stdafx.h 头文件才能编译程序而不会出错。我想知道这个头文件的用途以及为什么它在 Visual Studio 中。 我正在使用 Visual Studio Enterprise (2015)。

【问题讨论】:

  • 这是预编译的头文件。这个想法是你把你需要的所有头文件放在 stdafx.h 中,然后它构建并缓存一个可以在编译程序时使用的大文件,而不必寻找和解释所有包含的头文件(以及包含的头文件)这些标题)每次构建时。它可以极大地缩短构建时间。创建项目时,项目属性中应该有一个选项来禁用预编译头使用。
  • "如果我使用普通的文本编辑器或 Code::Blocks,则不会出现此问题。" - 没门。那是不合逻辑的。这不可能取决于编辑器。这是一个编译问题。
  • 我投票决定将此问题作为题外话结束,因为需要回答 2 个问题,但都已回答。

标签: c++ visual-studio include visual-studio-2015 stdafx.h


【解决方案1】:
当使用 Visual Studio 的 New 创建标准项目时,

StdAfx.h 是用于生成 Precompiled Header 的默认文件名(请参阅 Creating Precompiled Header Files)项目向导。通过转储已解析和预编译的标头的二进制表示,预编译标头可以显着减少编译项目所需的时间。通常,预编译的头文件中应该只包含很少更改的头文件(Windows SDK 头文件、C++ 标准库头文件、CRT 头文件等)。

预编译头文件的使用通过/Y (Precompiled Headers) 编译器开关进行控制。如果您不想使用预编译头文件,请确保在您的项目设置中既没有设置 /Yc (Create Precompiled Header File) 也没有设置 /Yu (Use Precompiled Header File)

如果您想使用预编译头文件,但不想(或不能)将预编译头文件作为第一个包含在所有编译单元中,则可以改用/FI (Name Forced Include File) 编译器开关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-12
    • 2015-05-31
    • 1970-01-01
    • 2019-01-26
    • 2014-06-11
    • 2011-06-11
    • 1970-01-01
    • 2020-11-17
    相关资源
    最近更新 更多