预编译标准库头文件 - C ++

时间:2009-11-14 18:41:53

标签: c++ header-files precompiled-headers

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

如果我理解正确,我需要写如下。

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

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

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

任何帮助都会很棒!

2 个答案:

答案 0 :(得分:1)

基本上每个体面的编译器都使用precompiled headers。已编译的标题将缓存只有在更改后才会重新编译

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

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

答案 1 :(得分:0)

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

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

有关更多优秀信息,请参阅此文章:www.cygnus-software.com