Почему "массив" помечен как зарезервированное слово в Visual С++?
Синтаксис Visual Studio выделяет это слово синим, как будто это ключевое слово или зарезервированное слово. Я попытался выполнить поиск в Интернете, но слово "массив" выбрасывает поиск, я получаю в основном страницы, объясняющие, что такое массив. Для чего он используется?
Ответы
Ответ 1
Это не зарезервированное слово по стандартам ИСО. Microsoft С++/CLI определяет массив в пространство имен cli, а подсветка синтаксиса Visual Studio будет рассматривать его как зарезервированное слово. Это использование будет рассматриваться как расширение поставщика, а не часть любого международного стандарта C или С++.
ISO C99 Ключевые слова:
auto enum restrict unsigned
break extern return void
case float short volatile
char for signed while
const goto sizeof _Bool
continue if static _Complex
default inline struct _Imaginary
do int switch
double long typedef
else register union
ISO С++ 98 Ключевые слова:
and double not this
and_eq dynamic_cast not_eq throw
asm else operator true
auto enum or try
bitand explicit or_eq typedef
bitor export private typeid
bool extern protected typename
break false public union
case float register unsigned
catch for reinterpret_cast using
char friend return virtual
class goto short void
compl if signed volatile
const inline sizeof wchar_t
const_cast int static while
continue long static_cast xor
default mutable struct xor_eq
delete namespace switch
do new template
Ответ 2
Это не так. По крайней мере, не в стандартном C/С++.
Теперь вы можете спросить, почему "запись" была зарезервированным словом в C в K & R, но не на C99 - кто-то думал, что они могут добавить эту функцию в в какой-то момент, но в конечном итоге решил против него.
Ответ 3
Он используется в С++/CLI.
Справочник по языку Visual С++: "Ключевое слово массива позволяет создавать динамический массив, который выделяется в общей куче времени выполнения".
Ответ 4
Visual Studio никогда не беспокоилась об определении разных грамматик С++ для своего красивого принтера. ISO С++, VС++, С++/CLI или просто старый C - все имеют одну и ту же грамматику. Итак, имена, подобные массиву и интерфейсу, обрабатываются так, как если бы они были ключевыми словами.
Было бы довольно сложно, чтобы симпатичный принтер обнаружил диалект С++, используемый в foo.cpp. Вам нужно будет скомпилировать код для этого. В настоящий момент симпатичный принтер может работать с токенами, что означает, что ему нужно только разобрать код.
Ответ 5
В каком издании? Поиск Google для "зарезервированных слов С++" не показывает такого использования.
Я обычно использую "массив" в примере кода.
http://cs.smu.ca/~porter/csc/ref/cpp_keywords.html
Ответ 6
Это не зарезервированное слово, но Microsoft visual studio решила отметить его блюз, как если бы это было зарезервированное слово, но это, безусловно, не соответствует "С++ Programming 5th Edition" Д.Д. Малик.
Ответ 7
Тот факт, что слово, освещенное в MSVC, не означает, что это ключевое слово C/С++. Как вы можете видеть, в нем также выделяются многие нестандартные вещи, такие как __int64
или даже __int128
, хотя в VC нет 128-битного типа int.