【问题标题】: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 如果您能展示一个最小的示例程序和您用于编译的命令行选项,将会有所帮助。

标签: c++ namespaces embedded keil rogue-wave


【解决方案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

    【讨论】:

      猜你喜欢
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多