话虽如此,如果foo.cpp包含bar.h和qux.h,但事实证明bar.h本身包含qux.h呢?那么foo.cpp是否应避免包含qux.h?优点:清理了foo.cpp(减少了"噪音")。缺点:如果有人更改bar.h以不再包含qux.h,则foo.cpp会神秘地开始无法编译。还会导致foo.cpp和qux.h之间的依赖关系不明显。
如果你的答案是“cpp文件应该#include它需要的每个头文件”,那么从逻辑上推论,这意味着几乎每个cpp文件都必须包括、等,因为大多数代码最终都会使用它们,如果你不能依赖其他头文件包含它们,那么你的cpp文件需要显式地包含它们。这在cpp文件中似乎是很多的"噪音"。
你有什么想法?
之前的讨论:
预计完成时间:受此前在这里的讨论启发,我编写了一个Perl脚本来逐个注释掉每个“include”和“using”,然后尝试重新编译源文件,以找出不需要的内容。 我还弄清楚了如何将其与VS 2005集成,因此您可以双击转到“未使用”的包含文件。 如果有人需要它,请告诉我...现在还处于实验阶段。