***声明错误,但程序运行正确
Posted
技术标签:
【中文标题】***声明错误,但程序运行正确【英文标题】:Top level declarator error but the program runs correctly 【发布时间】:2020-09-04 12:32:18 【问题描述】:我有一个包含多个文件的项目,包括 main.cpp 和两个头文件。两个标题在类名声明行都有错误。将任何文件或项目作为一个整体构建不会产生错误或警告。程序本身运行正常。
我正在使用 CodeLite IDE 和 GCC 编译器。
这种行为的原因可能是什么?将来会导致任何问题吗?
#include <Creature.h>
#include <Party.h>
int main()
// Does something with the stuff from header files.
return 0;
Creature.h 内部:
#pragma once
class Creature // Error: expected ';' after top level declarator
// something
;
Party.h 内部:
#pragma once
class Party // Error: expected identifier or '('
// something
;
【问题讨论】:
这实际上是您的全部代码吗?根据错误,我的猜测是某处的类型没有以分号终止。 @Stephen Newell 是的,它是整个程序减去括号的内容。 【参考方案1】:您的 IDE 认为头文件是用 C 编写的(其中 class
不是关键字,因此 Creature
是声明符),因为您为它们提供了常规扩展名 .h
用来表示。不要那样做:对 C++ 头文件使用 .hh
、.hpp
或 .hxx
,以便工具(和人类)知道你在写什么,而不必理解文件。
【讨论】:
以上是关于***声明错误,但程序运行正确的主要内容,如果未能解决你的问题,请参考以下文章