Разрешены ли знаки доллара в идентификаторах в C ++ 03? - PullRequest
16 голосов
/ 02 июня 2009

Что стандарт C ++ говорит об использовании знаков доллара в идентификаторах, таких как Hello$World? Они законны?

Ответы [ 7 ]

16 голосов
/ 02 июня 2009

Идентификатор c ++ может состоять из любого из следующего: _ (подчеркивание), цифры 0-9, буквы a-z (как в верхнем, так и в нижнем регистре) и не может начинаться с цифры.

Существует ряд исключений, поскольку C99 допускает расширения стандарта (например, visual studio ).

14 голосов
/ 02 июня 2009

Они незаконны. Единственными допустимыми символами в идентификаторах являются буквы, цифры и _. Идентификаторы также не могут начинаться с цифр.

11 голосов
/ 17 апреля 2013

В C ++ 03 приведенные ранее ответы верны: они незаконны. Однако в C ++ 11 ситуация изменилась:

Ответ здесь «Может быть» :
Согласно §2.11 идентификаторы могут состоять из цифр и идентификаторов-нецифров , начиная с одного из последних. идентификатор-нецифры являются обычными a-z, A-Z и подчеркиванием, кроме того, начиная с C ++ 11 они включают универсальные имена-символы (например, \uBEAF, \UC0FFEE32), и другие определяемые реализацией символы . Таким образом, реализация определяется, если разрешено использование $ в идентификаторе. VC10 и выше поддерживает это, возможно, и более ранние версии. Он даже поддерживает идентификаторы, такие как こんばんは.

Но: Я бы их не использовал. Сделайте идентификаторы максимально читабельными и переносимыми. $ определяется реализацией и поэтому не является переносимым.

8 голосов
/ 02 июня 2009

Не разрешено, но многие, если не большинство компиляторов поддерживают их, обратите внимание, что это может зависеть от платформы, поэтому gcc on arm не поддерживает их из-за ограничений сборки.

1 голос
/ 02 июня 2009

Соответствующий раздел: «2.8 Идентификаторы [lex.name]». Из базового набора символов единственными допустимыми символами являются A-Z a-z 0-9 и _. Тем не менее, такие символы, как é (U + 00E9) также допускаются. В зависимости от вашего компилятора вам может потребоваться ввести é как \ u00e9.

0 голосов
/ 02 июня 2009

Illegal. Я думаю, что знак доллара и обратный удар являются единственными знаками препинания на моей клавиатуре, которые где-то не используются в C ++ (знак «%» находится в строках формата, которые в C ++ относятся к стандарту C).

0 голосов
/ 02 июня 2009

Они не являются законными в C ++. Однако некоторые языки, производные от C / C ++ (такие как Java и JavaScript), допускают их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...