2017-02-16 58 views
1

我遇到了别人代码的问题,看起来头文件是乱序包含的。 (例如,我得到重定义错误,其中一些甚至在同一个文件中!)看到C++ Builder编译器正在使用的#include树,这与Visual Studio的-showIncludes标志类似。有没有这样的功能;如果是这样,我该如何访问它?我特别使用C++ Builder 2007.在C++ Builder中显示#include层次结构

回答

0

如果包含多个包含全局常量,变量的文件,有时甚至包含#defines,通常会发生这种情况。这是MDI应用其中主Form包含的子包括Form S和他们中的一些使用相同的库很常见......

包含分层结构不会帮助,除非你打算进行编辑所有源文件#include为了这可能会导致问题以后(尤其是兼容性)...

为了解决这个问题,你应该与封装

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

语句所有这些文件。像在本例中:

这将防止在编译前的水平作为源多个定义和汇编将被处理仅在第一次(同时仍然没有限定#define _file_name_h)。

0

不幸的是,没有Borland C编译器选项来显示#include d文件的层次结构。参见Embarcadero的BCC32 CLI docs

然而,替代方案(授予的,不是很干净)是使用Borland C Compiler Preprocessor,例如,

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