***声明错误,但程序运行正确

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,以便工具(和人类)知道你在写什么,而不必理解文件。

【讨论】:

以上是关于***声明错误,但程序运行正确的主要内容,如果未能解决你的问题,请参考以下文章

程序编译后运行时的内存分配

我的pycharm没有报错,但代码就是运行不出来,这是怎么回事?

应用程序错误 - 调试 exe 无法运行

部署 Node.js 应用程序时出现 Heroku 错误

Android NDK 应用程序构建但不运行

InternetReadFile 问题(错误 87 - 参数不正确)