【发布时间】:2009-11-14 18:41:52
【问题描述】:
在我的项目中,不同的文件中使用了几个 STL 标头。我读到了,将所有这些头文件放在一个头文件中并在我的文件中使用该头文件将允许编译器预编译头文件,这可能会导致更快的编译时间。
如果我理解正确,我需要像下面这样写。
// stl.hpp
#include <string>
#include <algorithm>
#include <vector>
现在在所有需要访问 STL 的文件中包含 stl.hpp。这是正确的吗?
我的一些文件将仅使用 vector 头文件中的功能。但是如果我按照上述方法,它将包含不必要的标题。这会有什么问题吗?如果我包含一个头文件并且没有使用其中的任何内容,是否会生成任何代码?
任何帮助都会很棒!
【问题讨论】:
-
我对将所有头文件包含在单个头文件中会导致编译时间更快的说法高度怀疑。
-
C++ Templates - The complete guide说,确实如此。不过我不确定。 -
编译计时很简单,试一试看看有没有明显改善。
-
stl.hpp可能是用词不当。<string>是否是 STL 的一部分至少是有争议的。 (注:STL 是一个容器/迭代器/算法库,由 Alexander Stepanov 开发。在此之前,它被并入了 C++ 标准库草案,将 C++98 的标准化推迟了大约一年。虽然在做所以,语言和库的其余部分都被扩展了,STL 也被改变了,这样它们就可以更好地结合在一起。其中,std::basic_string得到了一个容器接口,扩展的模板,以及采用的 STL 使用扩展模板。) -
@Charles 在单个头文件中包含头文件并不能加快编译速度。加快速度的是所有预编译的标头都被扫描和编译一次,并且在后续构建期间不再查看(假设它们在此期间没有更改)。根据项目中头文件的数量和大小,这可以显着提高速度。
标签: c++ header-files precompiled-headers