在Visual Studio中显示C++文件的#include层次结构

4jb9z9bj  于 2022-12-19  发布在  其他
关注(0)|答案(9)|浏览(273)

**问题:**我有一个大型的Visual C项目,我正尝试将其迁移到Visual Studio 2010。它是来自各种来源和不同年代的内容的巨大混合。我遇到问题是因为某些内容同时包含winsock.hwinsock2.h
**问题:**有哪些工具和技术可以显示Visual Studio C
源文件的#include层次结构?

我知道**cl /P用于获取预处理器输出,但它没有清楚地显示哪个文件包含其他哪些文件(在本例中,/P**输出为376,932行,长度为8-)
在理想情况下,我希望能够分层显示哪些文件包含哪些其他文件,沿着行号,这样我就可以跳转到源代码:

source.cpp(1)
  windows.h(100)
    winsock.h
  some_other_thing.h(1234)
    winsock2.h
vvppvyoh

vvppvyoh1#

有一个设置:
项目设置-〉配置属性-〉C/C++ -〉高级-〉显示包含
它将生成树。它Map到编译器开关/showIncludes

ff29svar

ff29svar2#

编译器还支持/showIncludes开关--它不给予行号,但可以提供关于哪些include来自何处的相当全面的视图。
它位于“项目设置”-〉“配置属性”-〉“C/C++"-〉”高级“-〉”显示包含“下面。

r1zk6ea1

r1zk6ea13#

我们发现IncludeManager是一个非常强大的工具,它不是免费的(但也不贵),现在已经免费了,它只支持Visual Studio 2005到2013。
它允许我们控制Include问题,并通过删除大量不使用的Include,将编译时间从50分钟减少到8分钟。

fnvucqvd

fnvucqvd4#

不如gcc的分层include特性,它在出错时显示直接的包含层次结构,VS中的“show includes”选项显示所有内容,这在调试分层include文件问题时显得有些多余。

sc4hvdpw

sc4hvdpw5#

现在有一个名为IncludeToolbox的Visual Studio插件,它可以列出依赖的包含,并做更多的事情,如随机删除和编译,看看是否需要该包含。

gorkyyrv

gorkyyrv6#

尝试redhat Source-Navigator以获得更图形化的解决方案。

fjnneemd

fjnneemd7#

我使用DoxygenGraphViz表示类层次结构图形,并使用文本中的依赖关系树表示它们。
Doxygen: Class Hierarchy
Doxygen diagrams: include hierarchy (classes)

两者都安装。确保选择GraphViz作为生成层次结构图的工具。选择“使用GraphVix包中的点工具”。
还要确保将GraphViz中的二进制目录包含到PATH环境变量中。

nuypyhwy

nuypyhwy8#

IncludeFinder是一个很好的第三方FOSS工具,可以将结果导出到XML,其中包括出现次数和行号的数据。

n3schb8v

n3schb8v9#

cl /P应该向您显示行号,这样您就可以知道头文件是从哪里包含进来的。

如果你用...

grep“^#行”文件.i

...那么你应该有一个相当清晰的指示,什么文件遇到的顺序由预处理器。
如果这是一个一次性事件,这应该是一个相当快的诊断。

相关问题