2

我想减少大型项目的编译时间。我们的主要编译器是 Visual Studio 2010,但有些代码是在 gcc 中编译的。我们目前正计划确保我们所有的 .h 文件都包含保护以及 #pragma once,这将允许 Visual Studio 和 gcc 提高编译速度。以前我们在 stdafx 中放置了更多头文件,但我们看到了缺点,如果其中一个头文件被更改,并且您编译了一个 cpp 而不重新编译预编译头文件,那么更改不会生效。这常常使我们感到困惑。目前的计划是对所有稳定的头文件或我们无法控制的头文件(它们不会更改)使用预编译的头文件,而对于其他所有内容,使用包含保护和#pragma once 以帮助提高编译速度。这条路规划不善有什么原因吗?包含警卫/#pragma once 与我缺少的预编译头或反之亦然的编译速度是否有好处?

4

1 回答 1

2

您采用的方法是合理的,但如果其中一个头文件的更改没有触发重新编译预编译头文件,您应该检查项目中的依赖关系。

还有其他一些事情可以帮助减少编译时间,比如完全避免包含。也就是说,在标头中使用前向声明并且仅包含在 cpp 文件中。这将减少编译时间依赖性并加快编译速度。

我不是预编译头文件的粉丝,所以我通常只是确保我包含所有需要的内容,而不包含任何不包含的内容

于 2011-11-18T14:08:16.470 回答