我在使用其他人的代码时遇到问题,似乎是乱序包含的头文件。(例如,我遇到了重新定义错误,其中一些甚至在同一个文件中!)查看 C++Builder 编译器正在使用的#include 树会很有用,类似于 Visual Studio 的 -showIncludes 标志。有没有这样的功能;如果是这样,我该如何访问它?我专门使用 C++Builder 2007。
问问题
218 次
2 回答
0
如果您包含多个包含全局常量、变量甚至#defines
. 这对于MDI应用程序非常常见,其中主应用程序Form
包含子项Form
的包含,其中一些使用相同的库......
除非您打算编辑所有源文件的顺序,否则包含层次结构对此无济于事,这#include
可能会导致以后出现问题(尤其是兼容性)...
要解决此问题,您应该使用封装所有此类文件
#ifndef _file_name_h
#define _file_name_h
// here your source and includes
#endif
陈述。就像在这个例子中一样:
这将防止在预编译器级别上进行多次定义和编译,因为源将仅在第一次处理(但#define _file_name_h
仍未定义)。
于 2017-02-17T10:18:39.020 回答
0
遗憾的是,没有用于显示#include
d 文件层次结构的 Borland C 编译器选项。请参阅 Embarcadero 的BCC32 CLI 文档。
然而,另一种选择(当然,不是那么干净)是使用Borland C Compiler Preprocessor,例如
CPP32 -Sr source.cpp # outputs source.i with comments and indentation retained
于 2017-02-17T20:08:17.893 回答