8

我有一个非常大的项目,其中包含大量相互包含的复杂头文件。它还依赖大量的第三方库。我正试图理顺混乱,但我遇到了一些麻烦,因为很多时候我会删除一个#include 指令,只是发现它包含的内容仍然包含在其他文件之一中. 有什么工具可以帮助我理解这一点吗?我真的很想能够点击一个 .h 文件并询问它包含(直接或间接)哪些 CPP 文件,以及包含它的路径,同样单击一个 cpp 文件并询问它是哪个 .h 文件。 h 文件包括(直接和间接)。我从来没有听说过可以做到这一点的工具,并且快速谷歌搜索并没有发现任何东西,但也许我没有

4

5 回答 5

4

对于 VS2003,有 /showIncludes 标志(在 C/C++/Advanced 属性中)。这将打印每个 .cpp 文件包含的所有标题以及它们包含的内容,因此您可以从那里开始。

我确信 VS2008 在同一个地方有相同的选项。

于 2009-07-13T20:05:46.660 回答
4

http://www.profactor.co.uk/includemanager.php

于 2009-07-13T21:25:43.720 回答
3

如果你使用 GCC 编译器,试试这个

g++ -M abc.cpp

它将显示文件 abc.cpp 的所有包含依赖项

于 2009-07-13T19:29:14.797 回答
0

你的情况让我想起了我自己。我有一堆我创建的头文件,我将它们用作库,而不是使用 DLL。

当然,循环包含会变得很麻烦,所以我发现像Visual Assist X  (1)这样的工具可以帮助解决这类问题。它有一个可以找到对东西的引用的功能,这样你就可以轻松地清除定义/声明/包含的东西等。它还有很多其他有用的功能,所以我认为它非常有用。

可能还有其他具有引用功能的工具/插件,但通常作为实用程序的其他重构和生产力功能中的一个功能。

高温高压

于 2009-07-13T20:11:18.643 回答
0

这非常乏味,但是您可以通过使用#error(和#pragma 消息)来对发生#include 的位置进行二进制搜索,以缩小包含第三方的包含行。对于我试图追踪的单个文件,我已经这样做了,但听起来你的问题更大,所以其他人提到的工具之一可能会更有效。

于 2009-07-13T21:29:39.470 回答