编译速度的提高包括防护与预编译的头文件

时间:2011-11-18 14:00:20

标签: c++ compilation precompiled-headers include-guards

我想减少大型项目的编译时间。我们的主要编译器是Visual Studio 2010,但有些代码是用gcc编译的。我们目前正计划确保所有.h文件都包含防护和#pragma一次,这将允许Visual Studio和gcc提高编译速度。以前我们在stdafx中添加了更多的头文件但我们看到了一些缺点,即如果其中一个头文件被更改,并且您编译了一个cpp而没有重新编译预编译头文件,那么更改没有生效。这经常引起我们的困惑。当前的计划是对我们控制之外的所有稳定头文件或头文件使用预编译头文件(它们不会更改),并且对于其他所有内容,使用include guard和#pragma once来帮助编译速度。有没有理由说这条道路计划不周?对于包含警卫/ #pragma一次编译速度和预编译头文件有什么好处,反之亦然,我错过了吗?

1 个答案:

答案 0 :(得分:2)

您正在采取的方法是合理的,但如果其中一个标头中的更改未触发预编译标头的重新编译,则应检查项目中的依赖项。

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

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

相关问题