顶级声明符错误但程序运行正确
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
,以便工具(和人类)知道您在编写什么,而无需了解文件。
我有一个包含多个文件的项目,包括 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
,以便工具(和人类)知道您在编写什么,而无需了解文件。