我刚想出了解决问题的想法并想分享它。对不起,如果太平庸。
因此,我正在审查的一个大型C ++项目包含许多依赖于其他包含但未包含所需包含的符号的包含。构建过程中的任何轻微更改都会导致“缺少符号”失败。
因此,为了立即检查所有自包含的包含,我搜索所有* .h,动态创建一个cpp文件,该文件只包含带有此.h文件的#include -statement并尝试编译它。最后,我获得了一个“好”和“坏”包含文件的列表。 酷不是吧:-) 或者有更简单的解决方案吗?
答案 0 :(得分:12)
如果每个.cpp文件首先包含它自己的头文件,然后是其他头文件,那么您将在不使用外部工具的情况下进行此检查。
由于同样的原因,这实际上是Googles C++ Style Guide的一部分:
首选排序减少隐藏 依赖。我们想要每个标题 文件可以自行编译。该 实现这一目标的最简单方法是制作 确定他们每个人都是 第一个.h文件#included in some .cc。
如果你有任何头文件没有相应的.cpp文件,你必须为他们做一些特殊的事情。
答案 1 :(得分:1)
这已经很多年了,但我相信林特会为你做这件事。而且我似乎记得Lint还告诉你何时在前向声明中包含文件。