C / C ++:删除不必要的包含[重复]

Posted

技术标签:

【中文标题】C / C ++:删除不必要的包含[重复]【英文标题】:C/C++: Removing unnecessary includes [duplicate] 【发布时间】:2011-03-10 03:54:30 【问题描述】:

可能的重复:C/C++: Detecting superfluous #includes?How should I detect unnecessary #include files in a large C++ project?

我希望在我们的代码库中进行一些房屋清洁工作。我想首先从我们的源文件(*.c 和 *.cpp)中删除所有不必要的头文件。有谁知道这样做的工具或技术?

我们在 Mac、Linux 和 Solaris 上使用 GCC。在 Windows 上使用 Visual Studio。我查看了两个编译器的文档,似乎没有一个选项可以让它警告不必要的包含。

感谢任何想法或建议。

【问题讨论】:

【参考方案1】:

我不得不这样做一次,我最终这样做了:

    我从我的 haeder 和源文件中删除了几乎所有 #include 语句 我试图编译我的源代码

    每当编译器抱怨未定义的东西时,我要么:

    尽可能添加最小声明而不是包含标题(例如:“class SomeClass;”而不是 `#include “someclass.hpp”) 在别无选择时添加了所需的包含。

    转到2.直到成功。

我承认这很长而且很无聊,但值得。

【讨论】:

问题是有超过 5000 个源文件和总共 22 个项目。因为各个项目之间有很多通用代码,所以每次我需要测试更改时,我都必须重新构建每个项目。在这一点上,甚至不是工时,而是等待 1.5 小时来编译它们并重试。我担心这最终会发生,但我希望有一个更简单、自动化的解决方案。

以上是关于C / C ++:删除不必要的包含[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C中输入的字符计数[重复]

如何在c ++中删除嵌套列表中的重复元素

从文件中删除重复的反向行的问题

如何在 C 或 C++ 中以 O(n) 删除数组中的重复元素?

r 从包含 2 列组合的副本的数据框中删除行 [重复]

从数据框中删除重复项,基于两列 A,B,在另一列 C 中保持具有最大值的行