c++ - 为什么我必须在 Microsoft Visual Studio C++ 应用程序中#include "stdafx.h"?

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

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

最佳答案

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

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

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

关于c++ - 为什么我必须在 Microsoft Visual Studio C++ 应用程序中#include "stdafx.h"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33797157/

相关文章:

c++ - OS X 10.6.4 + Eclipse 3.5 + 最新的 CDT 不输出 cout/printf 到控制台

c++ - 通过隐式转换为字符串流式传输对象时重载解析失败

c++ - 实现细节继承?

c++ - #include <文件名> 和 #include "filename"之间有什么区别?

c++ - C++ Builder 中的 POCO 库

vb.net - 在 Visual Studio 中关闭 VB.NET 的自动折叠?

C#扫描特定输入的COM端口

c++ - 如何在 Visual Studio 中的库编译时获取链接器错误?

c++ - 如何在C++中正确使用#ifndef#define #endif

php - 将 .js 文件包含到 php 中时出现问题