C++ 优化标题

C++ 优化标题,c++,C++,我正在寻找一种工具,它至少可以做两件事中的一件 猜猜哪些标头可能未使用并且可以删除 猜测哪些头应该包含在文件中,但通过包含其他文件间接包含。因此,允许正确编译文件 有这样的工具吗?您可以使用GCC警告“-Wmissing声明”和“-Wredundant decls”。这并不完全是你想要的,但可能会有很大帮助。我的一位同事编写了一个非常简单的脚本来实现其中的一部分(而且速度也很慢……) 基本上,这个想法是尝试依次对每个include进行注释,然后尝试编译对象,它不处理头中的include,但已

我正在寻找一种工具,它至少可以做两件事中的一件

  • 猜猜哪些标头可能未使用并且可以删除
  • 猜测哪些头应该包含在文件中,但通过包含其他文件间接包含。因此,允许正确编译文件

有这样的工具吗?

您可以使用GCC警告“-Wmissing声明”和“-Wredundant decls”。这并不完全是你想要的,但可能会有很大帮助。

我的一位同事编写了一个非常简单的脚本来实现其中的一部分(而且速度也很慢……)

基本上,这个想法是尝试依次对每个
include
进行注释,然后尝试编译对象,它不处理头中的include,但已经删除了大量未使用的文件:)

编辑

算法的伪代码

for s in sourceFiles:
  while t := commentNextInclude(s):
    if compilationOk(): s := t
如我所说,依次对每个
#include
进行注释,每次检查程序是否仍在编译,如果仍在编译,则验证注释,然后继续下一次


不过,我无权透露脚本源代码。

这可能行得通。然而,它不会为我工作,因为我是一个VS用户。我将它保留为打开状态,以便非VS用户也可以从潜在的答案中找到一些有用的东西。类似的问题:您是否介意分享有关此“简单”脚本的更多详细信息?这可能会导致您删除“有效”包含,因为以前的一些头已经间接包含了您需要的代码。@jalf:是的,它非常粗糙,但我真的不介意这种重新纳入的情况。更烦人的是删除模板专门化或函数重载,如果没有这些重载,文件仍然可以编译,但会产生不同的结果。这是一个恼人的,但罕见的,并应通过测试捕获。它通常不会发生,除非方法被随意地抛出到头中。。。