Что говорит стандарт С++ об использовании знаков доллара в идентификаторах, таких как Hello$World
? Являются ли они законными?
Разрешены ли долларовые знаки в идентификаторах в С++ 03?
Ответ 1
Идентификатор С++ может состоять из любого из следующего: _ (подчеркивание), цифр 0-9, букв a-z (как верхнего, так и нижнего регистра) и не может начинаться с числа.
Существует ряд исключений, поскольку C99 позволяет расширять стандарт (например, визуальная студия).
Ответ 2
Они незаконны. Единственными юридическими символами в идентификаторах являются буквы, цифры и _. Идентификаторы также не могут начинаться с цифр.
Ответ 3
В С++ 03 ответы, приведенные ранее, верны: они являются незаконными. В С++ 11 ситуация изменилась:
Ответ здесь "Возможно" :
Согласно §2.11, идентификаторы могут состоять из цифр и идентификаторов-недигиттов, начиная с одного из последних. идентификаторы-недигиты - это обычные a-z
, a-z
и подчеркивание, кроме того, поскольку С++ 11 включают универсальные имена символов (например, \uBEAF
, \UC0FFEE32
), и другие символы, определенные реализацией. Таким образом, это реализация определена, если разрешено использование $
в идентификаторе. VC10 и выше поддерживают это, возможно, более ранние версии. Он даже поддерживает идентификаторы типа こんばんは
.
Но: Я бы не использовал их. Сделайте идентификаторы максимально читабельными и переносимыми. $
- это реализация, определенная и, следовательно, не переносимая.
Ответ 4
Не легально, но многие, если не большинство компиляторов, поддерживают их, обратите внимание, что это может зависеть от платформы, поэтому gcc на руку не поддерживает их из-за ограничений сборки.
Ответ 5
Соответствующий раздел - "2.8 Идентификаторы [lex.name]". Из базового набора символов единственными допустимыми символами являются A-Z a-z 0-9 и _. Однако также допускаются символы, такие как é (U + 00E9). В зависимости от вашего компилятора вам может потребоваться ввести é как\u00e9.
Ответ 6
Они не являются законными в С++. Однако некоторые родственные языки C/С++ (такие как Java и JavaScript) позволяют им.
Ответ 7
Illegal. Я думаю, что знак доллара и обратная связь являются единственными знаками пунктуации на моей клавиатуре, которые где-то не используются в С++ (знак "%" находится в строках формата, которые находятся на С++ по ссылке на стандарт C).