猿问

在C / C ++中检测多余的#includes?

在C / C ++中检测多余的#includes?

我经常发现文件的标题部分一直变得越来越大但它永远不会变小。在源文件的整个生命周期中,类可能已经移动并被重构,很可能有很多#includes不需要在那里再存在。将它们留在那里只会延长编译时间并增加不必要的编译依赖性。试图弄清楚哪些仍然需要可能是相当繁琐的。

是否有某种工具可以检测多余的#include指令并建议哪些可以安全删除?
lint可能这样做吗?


POPMUISE
浏览 547回答 3
3回答

慕标5832272

它不是自动的,但doxygen将生成#included文件的依赖关系图。你必须在视觉上仔细阅读它们,但它们对于获得使用什么的图片非常有用。

摇曳的蔷薇

检测多余包含的问题在于它不能仅仅是类型依赖性检查器。一个多余包括为它提供了什么有价值的汇编文件,并不会改变它的其他文件依赖其他项目。头文件可以通过多种方式改变编译,例如通过定义常量,重新定义和/或删除已使用的宏,添加一个命名空间,该命名空间可以在某种程度上改变名称的查找。为了检测命名空间之类的项目,您需要的不仅仅是预处理器,实际上您几乎需要一个完整的编译器。Lint更像是一种风格检查器,当然不具备这种全部功能。我想你会发现检测多余包含的唯一方法是删除,编译和运行套件。
随时随地看视频慕课网APP
我要回答