C++ Builder XE:找出包含特定 h 文件的位置

Posted

技术标签:

【中文标题】C++ Builder XE:找出包含特定 h 文件的位置【英文标题】:C++ Builder XE: find out where a specific h file is included 【发布时间】:2011-07-14 13:28:09 【问题描述】:

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

【问题讨论】:

【参考方案1】:

预处理器非常适合这个。右键单击在项目管理器中显示错误的 cpp 文件,然后选择“预处理” 其输出会按照处理顺序告诉您每个文件和行号。然后您可以搜索有问题的文件,它上面的行是包含它的文件。 这也可能是另一个头文件,因此它可能是一个长链,但您可以确定它的确切来源。

【讨论】:

嗯,我试过了,但在输出中找不到导致错误的文件。为什么会这样?我知道最终导致错误的文件包含在我想通过其他五个头文件链间接编译的文件中 - 但我什至在输出中找不到该链的第二个。 如果您正在预处理正确的 cpp 文件,则错误消息中的确切文件和行应该在 .i 文件中。如果错误消息指向这个位置,您应该可以搜索 problemheader.h: 999。【参考方案2】:

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

【讨论】:

感谢您的提示,但我在哪里可以找到此设置? Tools->Options...->Environmental Options->C++ Options->Project Properties, "Show general messages"【参考方案3】:

如果有问题的文件相当大,Doxygen 之类的工具可以帮助您显示包含依赖项(以及调用路径等)。

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

【讨论】:

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

以上是关于C++ Builder XE:找出包含特定 h 文件的位置的主要内容,如果未能解决你的问题,请参考以下文章

C++ Builder XE 无法从 BCB6 成功转换项目

C++ Builder 2009 同步

在我的 c++ builder 应用程序中包含 xmmintrin.h 的问题

SQLite在C++ Builder里怎么用

“运行”后 C++ Builder 未运行应用程序

我应该在 Delphi 而不是 C++ Builder 中编写组件吗?如何向组件添加事件?