2

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

4

3 回答 3

5

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

如果您添加一个经常更改的头文件,您将错过预编译头文件的要点,因为这个经常更改的头文件会导致您的整个项目重新编译,可能是不必要的。

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

于 2011-02-07T05:51:00.280 回答
3

预编译的头文件不会影响可执行文件的大小,只会影响编译速度。由于它们是预编译的,因此不必一直重新编译它们。Windows.h是此功能的主要受益者。

于 2011-02-07T05:50:58.287 回答
0

包含 c++ 标准头文件和 boost 库头文件以及您经常使用的第三方库中的任何其他头文件是一个好主意。这不会影响可执行文件的大小。

但是,您不应包含您自己项目中的标头,因为每当您对这些标头进行更改时,都需要重新构建整个项目。

于 2012-05-25T16:25:30.620 回答