gpt4 book ai didi

c++ - 编译速度改进包括守卫与预编译 header

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:57:09 27 4
gpt4 key购买 nike

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

最佳答案

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

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

我不喜欢预编译头文件,所以我通常只是确保我包括所有需要的东西,不包括任何不需要的东西

关于c++ - 编译速度改进包括守卫与预编译 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8183607/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com