1

在我的项目中,不同的文件中使用了几个 STL 标头。我读到了,将所有这些头文件放在一个头文件中并在我的文件中使用该头文件将允许编译器预编译头文件,这可能会导致更快的编译时间。

如果我理解正确,我需要像下面这样写。

// stl.hpp
#include <string>
#include <algorithm>
#include <vector>

现在包括stl.hpp所有需要访问 STL 的文件。这个对吗?

我的文件很少会只使用vector头文件中的功能。但是如果我按照上述方法,它将包含不必要的标题。这会有什么问题吗?如果我包含头文件并且没有使用其中的任何内容,是否会生成任何代码?

任何帮助都会很棒!

4

2 回答 2

1

基本上每个体面的编译器都使用预编译的头文件。已经编译的头文件将被缓存,并且只有在它们被更改时才会重新编译

使用已经编译的头文件而不是每次都重新编译它们会加快编译时间。

但是,无论是在单个文件中组合常用的头文件还是将它们分别包含在每个源文件中,在编译速度方面都无关紧要。

于 2016-07-03T14:31:26.820 回答
0

在尝试使用预编译的头文件加速构建之前,值得对现有构建进行基准测试/计时,以查看加速是否值得付出努力。

如果您只有几十个文件,#include <string>您可能看不到任何改进。如果您有 1000 个文件,那么它可能是值得的。

有关更多信息,请参阅本文: www.cygnus-software.com

于 2009-11-14T20:12:24.270 回答