为啥我会收到命名空间标识符错误?

Posted

技术标签:

【中文标题】为啥我会收到命名空间标识符错误?【英文标题】:Why am I getting a namespace identifier error?为什么我会收到命名空间标识符错误? 【发布时间】:2014-08-20 17:28:27 【问题描述】:

我正在使用 Keil uVision,但我不断收到此错误:

C:\Keil_v5\ARM\ARMCC\bin\..\include\rw/_defs.h(781): error:  #20:
    identifier "namespace" is undefined

什么会导致这个错误?命名空间不是自动定义的吗?

【问题讨论】:

我的预感是您为您的 C++ 程序使用了 C 编译器。 C 中没有命名空间。 你做了什么来得到这个错误?更多细节会很棒......什么编译器?什么系统?等等…… 我在很多地方都看到了这个答案,但我的文件是 .cpp 文件 keil不是c++编译器吗? @Csq @user3729617 如果您能展示一个最小的示例程序和您用于编译的命令行选项,将会有所帮助。 【参考方案1】:

看起来您正在对 C++ 代码使用 C 编译 - 检查编译器选项。

在 C++ 中 namespace 是保留字,但在 C 中不是,因此编译器会尝试将其解释为 标识符 而不是关键字 - 这当然在语法上毫无意义到 C 编译器。

【讨论】:

【参考方案2】:

您没有透露太多细节,但我的直觉是您为您的 C++ 程序使用了 C 编译器。 C 中没有命名空间。

我可以用这个程序产生类似的消息:

namespace test 

输出:

$ gcc test.c
test.c:1:1: error: unknown type name 'namespace'
 namespace test 
 ^
test.c:1:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before '
' token
namespace test 
            ^

Ideone link

【讨论】:

以上是关于为啥我会收到命名空间标识符错误?的主要内容,如果未能解决你的问题,请参考以下文章

更改 XML 节点属性值会导致“命名空间错误”

c ++由于命名空间导致无法解释的类“尚未声明”错误

Vue的bind为啥在WebStorm中会报命名空间的错误

Vue的bind为啥在WebStorm中会报命名空间的错误

为啥我会收到此错误? “[variable] 没有命名类型”在 C++ 中用于 std::string 数组,即使它已被包含并且在同一范围内

为啥我的 Web API 项目中出现“HttpException”缺失命名空间错误