我遇到了别人的代码问题,似乎是无序的头文件。 (例如,我得到重定义错误,其中一些甚至在同一个文件中!)看看C ++ Builder编译器正在使用的#include树会很有用,类似于Visual Studio' s -showIncludes标志。有没有这样的功能;如果是这样,我该如何访问它?我专门使用C ++ Builder 2007。
答案 0 :(得分:0)
如果您包含多次包含全局常量,变量甚至有时#defines
的文件,通常会发生这种情况。这对于 MDI 应用非常常见,其中主Form
包含子Form
的包含,其中一些使用相同的库...
包含层次结构对此没有帮助,除非您计划编辑所有源文件#include
以后可能导致问题的订单(特别是兼容性)......
要解决此问题,您应该使用
封装所有此类文件#ifndef _file_name_h
#define _file_name_h
// here your source and includes
#endif
语句。就像在这个例子中一样:
这将阻止预编译器级别的多个定义和编译,因为源将仅在第一次处理时(虽然#define _file_name_h
仍未定义)。
答案 1 :(得分:0)
可悲的是,没有用于显示#include
d文件层次结构的Borland C编译器选项。请参阅Embarcadero的BCC32 CLI docs。
然而,替代方案(授予,而不是干净)是使用Borland C Compiler Preprocessor,例如
CPP32 -Sr source.cpp # outputs source.i with comments and indentation retained