在VisualStudio中显示C++文件的包含层次结构 问题:我有一个大的VisualC++项目,我正试图迁移到VisualStudio 2010。它是来自不同来源和不同年龄的东西的巨大组合。我遇到问题是因为有些东西同时包含winsock.h和winsock2.h 问题:显示VisualStudioC++源文件的包含层次结构的工具和技术有哪些?

在VisualStudio中显示C++文件的包含层次结构 问题:我有一个大的VisualC++项目,我正试图迁移到VisualStudio 2010。它是来自不同来源和不同年龄的东西的巨大组合。我遇到问题是因为有些东西同时包含winsock.h和winsock2.h 问题:显示VisualStudioC++源文件的包含层次结构的工具和技术有哪些?,c++,visual-studio,include,C++,Visual Studio,Include,我知道cl/p用于获取预处理器输出,但这并没有清楚地显示哪个文件包含哪些其他文件,在本例中/p输出是376932行8- 在一个完美的世界中,我希望分层显示哪些文件包括哪些其他文件,以及行号,以便我可以跳转到源: source.cpp(1) windows.h(100) winsock.h some_other_thing.h(1234) winsock2.h 是一个很好的第三方,FOSS工具。您可以将结果导出为XML,其中将包括有关出现次数和行号的数据。cl/p应显示行

我知道cl/p用于获取预处理器输出,但这并没有清楚地显示哪个文件包含哪些其他文件,在本例中/p输出是376932行8-

在一个完美的世界中,我希望分层显示哪些文件包括哪些其他文件,以及行号,以便我可以跳转到源:

source.cpp(1)
  windows.h(100)
    winsock.h
  some_other_thing.h(1234)
    winsock2.h
是一个很好的第三方,FOSS工具。您可以将结果导出为XML,其中将包括有关出现次数和行号的数据。

cl/p应显示行号,以便您可以知道头文件从何处包含的上下文

如果你用

grep^line文件.i

。。。然后,您应该有一个非常清晰的指示,说明预处理器遇到了哪些文件

如果是一次性事件,这应该是一个非常快速的诊断。

有一个设置:

项目设置->配置属性->C/C++->高级->显示包含


这将生成树。它映射到编译器开关

编译器还支持/showIncludes开关-它不提供行号,但可以非常全面地查看哪些includes来自何处


它位于项目设置->配置属性->C/C++->高级->显示包含项下。

我们发现这是一个非常强大的工具。它不是免费的,但并不昂贵,它允许我们通过删掉大量未使用的Include来掌握Include问题,并将编译时间从50分钟减少到8分钟。

尝试更多。

不如gcc的分层Include功能好,它显示了发生错误时的直线包含层次结构。VS中的show includes选项显示所有内容,这在调试分层包含文件问题时显得有些过分。

现在Visual Studio有一个名为的插件。它可以列出您的从属包含,并执行更多操作,如随机删除和编译,以查看是否需要包含

安装两个。确保选择GraphViz作为生成层次结构图的工具。从GraphVix软件包中选择使用点工具


还要确保将GraphViz中的二进制目录包含到PATH环境变量中。

当然,但这会给我8000行无层次结构的非结构化输出。我已经查看cl/p输出很长时间了,我想知道是否有更好的工具用于此项工作。现在我发现有,这很好。问题是一般性的,答案将永远在这里,供其他人找到。+1非常感谢!但我担心xtofl因为更快而被接受。哟!我在这个有问题的文件上运行IncludeManager,它生成了一个让我大笑的图表。根据我的计算,我需要一台400显示器才能看到整个过程。我认为我们无法提供帮助。8-更新-IncludeManager母公司ProFactor www.ProFactor.co.uk已停业,但正在上述网站上免费提供其最新版本。缺点是它只适用于VS2005到VS2013的完整版本的Visual Studio。注意:层次结构可以在输出窗口中看到。如果有人感兴趣:即使您选择了叮当声,如果您在C/C++->命令行中添加-H,您仍然可以显示包含-其他选项仍然不如功能中包含的gcc好,它显示了与编译时错误相关的direct include层次结构,还显示了行号。您可以将输出窗口复制并粘贴到Notepad++之类的应用程序中,然后执行正则表达式查找并替换为空白,以从树中删除所有VS包含:1>\s*注意:包括文件:\s*C:\\Program Files\x86\.*\r\n | \n |$注意,虽然可以为单个源文件切换/showIncludes,除非在项目级别设置/showIncludes,否则它将无效。我已经等了5年了,这是我与mingw一起使用的。也许可以添加一些关于如何使用它的细节,文档在哪里等。?这个答案目前没有增加多少内容。不需要文档。当发生编译时错误时,gcc只显示include层次结构。。。以输出层次结构。归功于