顶级声明符错误但程序运行正确

Top level declarator error but the program runs correctly

我有一个包含多个文件的项目,包括 main.cpp 和两个 headers。两个 headers 在带有 class 名称声明的行都有错误。构建任何文件或项目作为一个整体不会出现错误或警告。程序本身运行正常。

我正在使用 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
};

您的 IDE 认为头文件是用 C 编写的(其中 class 不是关键字,因此 Creature 是声明符),因为您给了它们常规扩展名.h用来表示。不要这样做:对 C++ 头文件使用 .hh.hpp.hxx,以便工具(和人类)知道您在编写什么,而无需了解文件。