2009-11-14 139 views
1

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

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

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

现在包括在所有需要访问STL文件stl.hpp。它是否正确?

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

任何帮助将是伟大的!

+0

对于在单个头文件中包含所有头文件将导致更快编译时间的说法,我深表怀疑。 – 2009-11-14 18:43:53

+0

'C++模板 - 完整的指南'说,它的确如此。但我不确定。 – 2009-11-14 18:46:19

+2

编制时间非常简单,只需尝试查看是否有重大改进。 – 2009-11-14 18:51:12

回答

0

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

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

请参阅这篇文章更优异的信息:www.cygnus-software.com

1

基本上每一个体面的编译器使用precompiled headers。已经编译的头文件将被缓存为只有在它们被更改时才会重新编译

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

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