Почему я получаю ошибку идентификатора пространства имен?
Я использую 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 {
^