在C++生成器中显示 #include 层次结构

Show #include hierarchy in C++Builder

本文关键字:显示 #include 层次结构 C++      更新时间:2023-10-16

我在处理别人的代码时遇到问题,似乎是乱序包含的头文件。 (例如,我收到重新定义错误,其中一些甚至在同一文件中! 查看C++Builder编译器正在使用的 #include 树会很有用,类似于Visual Studio的-showInclude标志。 是否有任何此类功能;如果是这样,我该如何访问它? 我专门使用C++Builder 2007。

如果您包含包含全局常量、变量甚至有时甚至#defines的多次文件,通常会发生这种情况。这对于MDI应用程序来说很常见,其中主Form包含子Forms,其中一些使用相同的库......

包含层次结构对此无济于事,除非您计划按顺序编辑所有源文件#include这可能会导致以后出现问题(尤其是兼容性)......

要解决此问题,您应该将所有此类文件封装为

#ifndef _file_name_h
#define _file_name_h
// here your source and includes
#endif

语句。就像这个例子一样:

  • OpenGL 绘制立方体

这将防止在预编译器级别进行多个定义和编译,因为源代码只会在第一次被处理(而#define _file_name_h尚未定义)。

遗憾的是,没有Borland C编译器选项来显示#included文件的层次结构。 请参阅 Embarcadero 的 BCC32 CLI 文档。

但是,另一种选择(当然,不那么干净)是使用 Borland C 编译器预处理器,例如

CPP32 -Sr source.cpp # outputs source.i with comments and indentation retained