identifier: identifier-nondigit identifier identifier-nondigit identifier digit
identifier-nondigit: nondigit universal-character-name
nondigit: one of a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _
digit: one of 0 1 2 3 4 5 6 7 8 9
Идентификатор - это произвольно длинная последовательность букв и цифр. Каждый universal-character-nameв идентификаторе должен обозначать символ, кодировка которого в ISO 10646 попадает в один из диапазонов, указанных в таблице 2. Начальный элемент не должен быть universal-character-name обозначением символа, кодировка которого попадает в один из диапазонов, указанных в таблице 3. Прописные и строчные буквы различаются. Все персонажи значительны.21
00A8 | 00AA | 00AD | 00AF | 00B2-00B5 |
00B7-00BA | 00BC-00BE | 00C0-00D6 | 00D8-00F6 | 00F8-00FF |
0100-167F | 1681-180D | 180F-1FFF | ||
200B-200D | 202A-202E | 203F-2040 | 2054 | 2060-206F |
2070-218F | 2460-24FF | 2776-2793 | 2C00-2DFF | 2E80-2FFF |
3004-3007 | 3021-302F | 3031-D7FF | ||
F900-FD3D | FD40-FDCF | FDF0-FE44 | FE47-FFFD | |
10000-1FFFD | 20000-2FFFD | 30000-3FFFD | 40000-4FFFD | 50000-5FFFD |
60000-6FFFD | 70000-7FFFD | 80000-8FFFD | 90000-9FFFD | A0000-AFFFD |
B0000-BFFFD | C0000-CFFFD | D0000-DFFFD | E0000-EFFFD |
0300-036F | 1DC0-1DFF | 20D0-20FF | FE20-FE2F |
Идентификаторы в таблице 4 имеют особое значение при появлении в определенном контексте. Когда они упоминаются в грамматике, эти идентификаторы используются явно, а не с использованием identifierграмматической продукции. Если не указано иное, любая двусмысленность относительно того, identifierимеет ли данное значение особое значение, разрешается интерпретировать токен как обычный identifier.
Кроме того, некоторые идентификаторы зарезервированы для использования реализациями C ++ и не должны использоваться иначе; Диагностика не требуется.
Каждый идентификатор, содержащий двойное подчеркивание или начинающийся с подчеркивания, за которым следует заглавная буква , зарезервирован для реализации для любого использования. __
Каждый идентификатор, начинающийся с подчеркивания, зарезервирован для реализации для использования в качестве имени в глобальном пространстве имен.
В системах, в которых компоновщики не могут принимать расширенные символы, для universal-character-nameформирования допустимых внешних идентификаторов может использоваться кодировка . Например, для кодирования \u в файле universal-character-name. Расширенные символы могут создавать длинный внешний идентификатор, но C ++ не устанавливает ограничения на перевод значимых символов для внешних идентификаторов. В C ++ буквы верхнего и нижнего регистра считаются разными для всех идентификаторов, включая внешние идентификаторы.