c++ - 预编译 header : do's and don'ts?

标签 c++ precompiled-headers

我知道预编译 header 用于加快编译速度,但是对于我应该在其中包含哪些文件,是否有任何注意事项和不注意事项?例如,我有一个使用大量 boost 库的项目,所以我只在 stdafx.h 中包含了 boost 头文件。 (我正在使用 VS2008)。我是否也应该在其中包含每个标准头文件?这会增加我的可执行文件的大小吗,例如,即使我包含 <vector>但永远不要使用 std::vector ?将我自己项目的头文件包含在 stdafx.h 中是个坏主意吗?

最佳答案

一般来说,您在整个应用程序中使用且不经常更改的每个头文件都应该放入预编译头文件中。这将加快编译速度,因为预编译头文件只编译一次。

如果你添加一个经常变化的头文件,你会错过预编译头文件的意义,因为这个经常变化的头文件会导致你的整个项目重新编译,可能是不必要的。

具体来说,定义了一个模板类,所以如果你不会使用std::vector,开销不会很大。但是,我建议不要添加头文件——无论是标准的还是通用的——如果你真的不需要它们。编译时间、二进制大小有一些开销,并且可能会在项目后期引起冲突,所以如果您真的不需要,为什么要添加一些东西?

关于c++ - 预编译 header : do's and don'ts?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4918396/

相关文章:

c++ - 是否所有虚函数都需要在派生类中实现?

c++ - 如何使用 boost.python 导出复杂类

c++ - SDL中如何实现转义序列

precompiled-headers - 预编译头

c++ - 可以将预编译 header 与 MIDL 生成的文件一起使用吗?

c++ - Makefile/双重编译

c++ - 有没有一种方法可以根据枚举在可变参数模板函数之间进行选择,这比将函数包装在结构中更简单?

c++ - Eclipse 总是崩溃?

c++ - 如何有效地使用预编译头文件(使用/Yc 和 Yu 选项)?

objective-c - 如何将宏和常量放入 iOS 项目的 .pch 文件中?