2011-07-14 62 views
1

我目前正在将一个相当大的项目从C++ Builder 5移植到最新版本C++ Builder XE。这是我第一次使用C++ Builder。我在文件中遇到了一个错误,但我不想包含这个文件(它是不再需要的组件的代码)。但是,我无法找到包含该文件的位置和方式。除了错误本身之外,编译器错误根本没有提供任何提示。你通常如何找出包含文件的位置?C++ Builder XE:找出包含特定h文件的位置

回答

5

预处理器对此非常完美。右键单击cpp文件,在项目管理器中给出错误,然后选择“预处理” 从中得到的输出会告诉您每个文件和行号的处理顺序。然后您可以搜索有问题的文件,并且它上面的行是包含它的文件。 这也可能是另一个头文件,所以它可能是一个长链,但你可以确切地确定它来自哪里。

+0

嗯,我试过了,但是我找不到在输出中导致错误的文件。为什么会这样?我知道最终导致错误的文件包含在我想通过其他五个头文件链间接编译的文件中,但我甚至无法在输出中找到第二个链。 – mort

+0

如果您正在预处理正确的cpp文件,则错误消息中的确切文件和行应该位于.i文件中。如果这是错误信息指向的地方,你应该能够搜索problemheader.h:999。 –

1

如果这些文件比较大,像Doxygen这样的工具可以帮助向您显示包含依赖关系(以及调用路径等)。

如果只有一次或两次,您将不得不这样做,David Dean对预处理器的建议是黄金。

+0

我也已经考虑过Doxygen,因为我们已经在使用它。唯一的问题是:我想摆脱的文件是外部文件(来自各种组件),因此您不能立即看到这些文件包含在哪里,只能在项目内检查文件(如果它们可能是间接的)包含某个文件。这是一个很大的帮助,但不是很舒服。 – mort

1

在项目选项中,启用编译器的常规消息。当编译器遇到错误时,您将能够看到导致错误代码的包含链。

+0

感谢您的提示,但我可以在哪里找到此设置? – mort

+0

工具 - >选项...->环境选项 - > C++选项 - >项目属性,“显示常规消息” –

相关问题