c++ - 在头文件或源文件中包含 stdafx.h?

标签 c++ visual-studio header-files precompiled-headers stdafx.h

我有一个名为 stdafx.h 的头文件,当然这个是预编译的。 我已经读过我应该将这些文件包含到我的 .cpp 文件中,但是其中一些语句已经在随附的头文件中需要。

我应该将 stdafx 添加到我的标题中还是添加到我的 cpp 中?我认为将其放入标题中是一种好习惯,但我似乎不得不将其放入标题中。

例子:

stdafx 包含 freeglut。
我的类头文件有一个 GLenum 属性。

我应该将 stdafx 包含在类的 .h 中吗?

最佳答案

stdafx.h should be the first include in EVERY cpp file in your project.


考虑 C++ 不编译头文件,只编译 Cpp 文件

因此,如果 stdafx 是 cpp 文件中的第一个包含,那么编译器将拥有头文件所需的所有内容,当它在 Cpp 文件中遇到头文件时

例如

你有 A.cpp & A.h.
A.h 需要 std:string。

你有 B.cpp & B.h
B.h 需要 A.h,因此 B.h 也需要 std::string。

因为这是一种很好的做法,所以您输入 #include <string>在 stdafx.h 中。

您的构建失败,因为什么都看不到 std::string

现在将 stafx.h 作为第一个包含在 A.cpp 和 B.cpp 中。
当编译器点击 A.cpp 时,它会选择 <string> 的包含。 ,然后拿起 A.h,一切都很开心,因为我们知道 std::string 是什么。

编译器现在点击 B.cpp,它再次首先包含 stdafx,它带来了 <string> ,然后点击 B.h,这带来了 A.h,它再次高兴,因为 std::string 已经被包含。

希望这会有所帮助。

关于c++ - 在头文件或源文件中包含 stdafx.h?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5234311/

相关文章:

c++ - 如何使用Qt/QwtPlot设置固定轴间隔?

visual-studio - 如何使用 VS 2012 插入报告部分 ionic 报告

c++ - 如何快速搜索项目中所有包含的头文件以查找特定符号?

python - 从 python 中查找 python 头路径?

C 头文件/源文件 - enum typedef

c++ - 如何允许来 self 的应用程序 C++ 的请求 ICMPv4? Windows 8.1+

c++ - 将 std::error_code 与整数进行比较

c++ - 如何禁用指针作为模板类型名

visual-studio - VS2010 经典 ASP 支持

c++ - 在 Visual Studio C++ 中初始化 std::string 数组时崩溃