2

我发现长序列的标准包括烦人:

#include <vector>
#include <string>
#include <sstream>
#include <iostream>

考虑到这些头文件很少更改,是否有理由不制作“std.h”文件#包括所有std头文件并在任何地方使用它?

4

6 回答 6

18

包含不必要的头文件会增加编译时间。

于 2009-01-19T19:03:51.090 回答
6

您可能希望将这些添加到项目的标准预编译头文件中:如果您的项目具有标准的预编译头文件,并且您的文件不应该在其他可能具有不同标准头文件的项目中可重用。

于 2009-01-19T19:09:19.580 回答
4

我讨厌为此创建一个新答案,但我基本上想把 Brian Ensink 和 ChrisW 的答案放在一起:

首先,正如布赖恩所提到的,你的编译时间会飞涨,因为每次编译时都会包含大量文件。幸运的是,它看起来像是标准包含,所以它们不应该经常改变,但它仍然很糟糕。

您可以通过构建一个预编译的头文件来缓解这种情况,该头文件只会在您进行完全重建、烘烤 PCH 文件或更改其中包含的内容时重新编译 - 但这就是为什么 PCH 文件通常只有系统范围的包含或东西不会经常改变。

于 2009-01-19T20:15:17.233 回答
1

如果您实际上并未使用它,则不应包含它。

于 2009-01-19T20:07:12.757 回答
0

它会降低您的代码可读性(奇怪的是:))。通过将它们全部包含在一个头文件中,您无法再仅通过查看文件顶部来判断哪些翻译单元包括 iostream(因此执行 IO)、fstream(以及执行文件访问)等。

我建议使用允许折叠包含语句的 IDE,如 eclipse,并让它自动折叠包含。这会将它们从您的视图中删除,同时仍使依赖关系清晰。

于 2009-01-19T20:08:22.083 回答
-2

这也会增加你的目标文件的大小,这在现在可能没什么大不了的。

根据评论编辑二进制文件实际上不会更大

于 2009-01-19T19:45:14.593 回答