【发布时间】:2009-11-16 19:01:01
【问题描述】:
我将#ifndef..#define..#endif 添加到我的项目文件中,但编译器失败。一旦我删除它或在定义中添加任何其他名称,它就可以正常编译。可能是什么问题呢?
听起来文件已经被声明了,但我不知道在哪里。我可以删除它,但我真的很想知道为什么会这样。
error: expected class-name before ‘{’ token
error: ‘QDesignerFormEditorInterface’ has not been declared
还有一些其他错误。
我实际上使用的是 Qt 中的一个示例,“Custom Widget Plugin Example”。
不同之处在于我将自己的类用于自定义小部件(.h、.cpp 和 .ui 文件)。
这可能与包含 2 个包含的文件有关,尽管示例是这样做的。
【问题讨论】:
-
描述文件。解释您要添加的#ifndef 内容以及原因。如果它是标准的包含防护,并且您做得对,那么您可能正在复制包含防护的名称。在您的代码库中搜索它,并在将来使用更多不同的名称(直接基于整个文件名的名称通常是安全的)。
-
失败的不是构建,而是一个编译单元。这是一个编译时错误,所以添加编译失败的单元肯定是可能的。
标签: c++ compiler-errors macros header include-guards