Почему я получаю ошибку идентификатора пространства имен?

Я использую Keil uVision и продолжаю получать эту ошибку:

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

Что может привести к этой ошибке? Разве пространство имен не определяется автоматически?

2 ответа

Решение

Похоже, вы используете компиляцию C для кода C++ - проверьте параметры компилятора.

В C++ namespace это зарезервированное слово, но не в C, поэтому компилятор будет пытаться интерпретировать его как идентификатор, а не как ключевое слово - что, конечно, не имеет смысла синтаксически для компилятора C.

Вы не раскрыли много деталей, но я догадываюсь, что вы используете компилятор 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 {
            ^

Идеальная ссылка

Другие вопросы по тегам