首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >去除预编译头文件

去除预编译头文件
EN

Stack Overflow用户
提问于 2009-11-14 09:35:51
回答 2查看 375关注 0票数 1

好的,我有Mac和Windows的旧Metrowerks代码,以前的开发人员对这个代码库构建的每个项目都使用了预编译头文件。

从概念上讲,如何摆脱预编译头文件?

您是否获取.pch的内容并将其移动到core.h并将其包含在所有类的.h文件中?

我想转到使用CMAKE构建,虽然有一些hack可以使预编译头文件工作,但我认为最好是删除对它们的依赖。

有些人可能会说一些关于编译速度的事情,但我不是在比赛,我已经有了快速的设备,我更感兴趣的是如何摆脱预编译头文件。

EN

回答 2

Stack Overflow用户

发布于 2009-11-14 15:55:15

如何从概念上摆脱预编译头文件?

预编译头文件是一种优化。从概念上讲,您可以通过简单地使用常规标头来去除预编译头。

您是否将.pch的内容移动到core.h,并将其包含在所有类的.h文件中?

我认识的程序员就是这样做的。就我个人而言,我更喜欢知道我正在使用哪些函数以及它们来自哪里,所以我确保每个文件#includes编译该文件所需的所有头文件(并且只包含编译该文件所需的头文件)。然后,这确实需要不断地检查是否不再需要头部。

票数 1
EN

Stack Overflow用户

发布于 2011-06-06 22:32:51

经历过..。在一个C++项目中,每个翻译单元都包含一个中心头,反过来几乎每个Boost头都包含在内。在支持PCH的平台上很不错,但我们正在编译一些不支持PCH的平台,而且它们需要很长时间。(您的core.h方法也是如此。不要这样做,尤其是在使用C++时。)

所以,这里就是:

  • grep用于PCH的所有包含项,并将其删除(或者更温和地将其注释掉)。
  • 对于每个翻译单元,尝试构建并添加缺少的包含项,直到不再收到编译器错误为止。

是的,这就是暴力手段。不幸的是,我不知道更好的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1732933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档