我有一个名为 stdafx.h 的头文件,当然这个是预编译的。我已经读过我应该将这些文件包含到我的 .cpp 文件中,但是其中一些语句在随附的头文件中已经需要。
我应该将 stdafx 添加到我的标题中还是添加到我的 cpp 中?我认为将其放入标题中是一种好习惯,但我似乎不得不将其放入标题中。
例子:
stdafx 包含 freeglut。
我的类头文件具有 GLenum 的属性。
我应该将 stdafx 包含在课程的 .h 中吗?
我有一个名为 stdafx.h 的头文件,当然这个是预编译的。我已经读过我应该将这些文件包含到我的 .cpp 文件中,但是其中一些语句在随附的头文件中已经需要。
我应该将 stdafx 添加到我的标题中还是添加到我的 cpp 中?我认为将其放入标题中是一种好习惯,但我似乎不得不将其放入标题中。
例子:
stdafx 包含 freeglut。
我的类头文件具有 GLenum 的属性。
我应该将 stdafx 包含在课程的 .h 中吗?
stdafx.h应该是项目中每个 cpp 文件中的第一个包含。
因此,如果 stdafx 是 cpp 文件中的第一个包含,那么当编译器遇到Cpp 文件中的头文件时,它将拥有头文件所需的一切。
例如
你有 A.cpp & Ah
Ah 需要 std:string。
你有 B.cpp & Bh
Bh 需要 Ah 因此 Bh 也需要 std::string 。
因为这是一种很好的做法,所以您#include <string>
输入了 stdafx.h。
您的构建失败,因为什么都看不到 std::string
现在将 stafx.h 作为第一个包含在 A.cpp 和 B.cpp 中。
当编译器点击 A.cpp 时,它会选择 include for <string>
,然后选择 Ah,一切都很开心,因为我们知道 std::string 是什么。
编译器现在点击 B.cpp,它再次首先包含 stdafx,它带来了<string>
,然后点击 Bh,它带来了 Ah 再次高兴,因为 std::string 已经被包含在内。
希望这可以帮助。
在 stdafx.h 中包含某些内容之前问自己这两个问题
如果其中任何一个的答案是“否”,则不要包括它。