如何修复错误:未知的类型名称"namespace"

How to fix error: unknown type name ‘namespace’

本文关键字:quot namespace 类型 错误 何修复 未知      更新时间:2023-10-16
#ifndef UNO_ACTION_ 
#define UNO_ACTION_
namespace Uno
{
namespace Game
{
class Game;
}
} // namespace
namespace Uno
{
namespace Action
{
using ::Uno::Game::Game;
class Action
{
public:
virtual bool isDisposeable() = 0;
virtual void takeAction(Game* game) = 0;
virtual ~Action() {}
};
}
}
#endif

我在ubuntu 12.04上编译了这些代码,它返回到错误集:

action.h:4:1: error: unknown type name ‘namespace’
action.h:4:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
action.h:8:1: error: unknown type name ‘namespace’
action.h:8:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token

如何解决这些错误?

听起来你正试图用C编译器编译C++代码。尝试使用g++而不是gcc,并为文件提供C++扩展名,如.cpp(而不是.c)。

YCM和clang出现此问题。原来,丢失的标志是"-x", "c++"

来自官方文件:

-x<语言>:将后续输入文件视为具有类型语言。

我遇到了类似的问题,发现了这个问题,但解决方案与我的不完全匹配,所以我在这里添加了我的解决方案。

在我的例子中,我在.cpp文件和.c文件中包含了一个头文件。解决方案是拆分标头的名称空间部分,因为这显然只在.cpp文件中需要。