Подтвердить что ты не робот

Разрешены ли долларовые знаки в идентификаторах в С++ 03?

Что говорит стандарт С++ об использовании знаков доллара в идентификаторах, таких как Hello$World? Являются ли они законными?

4b9b3361

Ответ 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).