【问题标题】:Compiling large header files C++编译大型头文件 C++
【发布时间】:2015-11-19 20:28:50
【问题描述】:

我的代码组织为

//LARGEHEADER.H

class LARGE {

 ...
}

//SMALLER.H
#include "LARGEHEADER.H"
class SMALL: protected LARGE {
...
}

//and in each of A.C, B.C, C.C ...
#include "SMALLER.H"
void f() {
 ...
}

现在 LARGEHEADER.H 大约为 10 MB。在尝试编译此设置时,它似乎占用了大量时间和内存,我的最终可执行文件接近 90 MB。请指出我做错了什么。如何使用此设置加快编译速度。

【问题讨论】:

  • 我会谦虚地建议 10mb 的标头太大了。无论如何,你不能在 gcc 中预编译你的头文件吗?
  • 如果 SMALL 总是包含 LARGE,那么分隔 LARGE 和 SMALL 标头有什么意义?
  • @KevinDTimm 感谢您推荐预编译头文件。我会调查的
  • @SergeyA :我正在处理一些以这种方式构建的遗留代码。所以改变它是最后的手段(如果它确实有助于加快编译)

标签: c++ gcc compilation makefile g++


【解决方案1】:

感谢您提出预编译头文件的解决方案。预编译头文件是一种优化策略,它没有解决问题的根本原因,即编码风格。参考这篇文章

Why does C++ compilation take so long?

在多个源/头文件中包含大型头文件将导致编译崩溃(为每个包含器生成调试/符号信息)。我重新组织了代码以删除此类依赖项。

【讨论】:

    猜你喜欢
    • 2022-09-26
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2012-06-06
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 2022-06-13
    相关资源
    最近更新 更多