#include "stdafx.h"
使用预编译头文件时是否每个文件都需要?或者只有源文件需要包含它。
编辑:另外,我的预编译头文件#includes
有很多 STL 头文件。但是,在我的标题中,有时我有返回的函数std::vector
或类似的东西,所以#include <vector>
无论如何我都需要。这比包含 stdafx.h 更糟糕吗?我需要包含我的单元测试框架的定义。
#include "stdafx.h"
使用预编译头文件时是否每个文件都需要?或者只有源文件需要包含它。
编辑:另外,我的预编译头文件#includes
有很多 STL 头文件。但是,在我的标题中,有时我有返回的函数std::vector
或类似的东西,所以#include <vector>
无论如何我都需要。这比包含 stdafx.h 更糟糕吗?我需要包含我的单元测试框架的定义。
每个源文件都需要在任何非注释行之前包含它。标头不需要包含它,因为每个源文件都会在任何其他标头之前包含它。
您可以在项目级别或文件级别设置是否要使用预编译的头文件。对于项目设置,转到项目属性对话框并单击配置属性/C/C++/预编译头文件。有一个创建/使用预编译头文件的选项。您可以通过在文件属性对话框中设置相同的选项来覆盖每个 .cpp 文件的项目级别设置。
所有你的 C/C++ 文件都需要在顶部有你的预编译头文件 - 如果它为那个项目设置的话。但是您可以根据 C/C++ 文件(Kei 所说的)关闭/打开它。
如果您要包含标准头文件,请将它们全部放在预编译的头文件中。然后你想在正常的头文件(.h)文件中需要它们。只要所有项目和文件都使用预编译头文件。
正如其他人所说,只有您的源文件需要包含预编译的头文件。我只想补充一点,在我看来,无论有没有预编译的头文件,代码都应该正确编译。为了实现这一点,头文件应该是自包含的,而不是依赖于源文件,包括其他所需的头文件。我认为预编译头文件只是一种加快编译速度的方法,而不是项目中所有使用头文件的存储库。