【问题标题】:Show #include hierarchy in C++Builder在 C++Builder 中显示#include 层次结构
【发布时间】:2017-02-16 18:29:31
【问题描述】:

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

【问题讨论】:

    标签: c++ include c++builder c++builder-2007


    【解决方案1】:

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

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

    要解决这个问题,您应该用

    封装所有此类文件
    #ifndef _file_name_h
    #define _file_name_h
    // here your source and includes
    #endif
    

    声明。就像在这个例子中一样:

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

    【讨论】:

      【解决方案2】:

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

      但是,另一种选择(当然,不是那么干净)是使用Borland C Compiler Preprocessor,例如

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

      【讨论】:

        猜你喜欢
        • 2010-11-11
        • 2017-07-15
        • 2018-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-24
        相关资源
        最近更新 更多