Идентификаторы (C++)
Идентификатор — это последовательность символов, используемая для обозначения одного из следующих элементов:
Имени объекта или переменной
Имени класса, структуры или объединения
Имени перечисленного типа
Члена класса, структуры, объединения или перечисления
Функции или функции члена класса
Имени определения типа (typedef)
Label name
Имени макроса
Параметра макроса
Следующие символы можно использовать в качестве любого символа идентификатора:
_ 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
В идентификаторе также можно использовать определенные диапазоны универсальных имен символов. Универсальное имя в идентификаторе не может обозначать управляющий символ или символ в основной кодировке исходного кода. Дополнительные сведения см. в разделе Character Sets. Следующие диапазоны номеров кодовых точек Юникода можно использовать как универсальные имена символов для любого символа в идентификаторе.
- 00A8, 00AA, 00AD, 00AF, 00B2-00B5, 00B7-00BA, 00BC-00BE, 00C0-00D6, 00D8-00F6, 00F8-00FF, 0100-02FF, 0370-167F, 1681-180D, 180F-1DBF, 1E00-1FFF, 200B-200D, 202A-202E, 203F-2040, 2054, 2060-206F, 2070-20CF, 2100-218F, 2460-24FF, 2776-2793, 2C00-2DFF, 2E80-2FFF, 3004-3007, 3021-302F, 3031-303F, 3040-D7FF, F900-FD3D, FD40-FDCF, FDF0-FE1F, FE30-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
Следующие символы могут быть любым символом в идентификаторе, кроме первого:
0 1 2 3 4 5 6 7 8 9
Следующие диапазоны номеров кодовых точек Юникода также можно использовать как универсальные имена символов для любого символа в идентификаторе, кроме первого:
- 0300-036F, 1DC0-1DFF, 20D0-20FF, FE20-FE2F
Блок, относящийся только к системам Майкрософт
Значимыми являются только первые 2048 символов идентификаторов Microsoft C++. Для имен пользовательских типов компилятор создает "внутренние" имена, чтобы сохранить информацию о типе. Длина такого имени, включая информацию о типе, не может превышать 2048 символов. (См. раздел Украшенные имена для получения дополнительных сведений .) Факторы, которые могут повлиять на длину декорированного идентификатора:
Обозначает ли идентификатор объект пользовательского типа или типа, производного от пользовательского типа.
Обозначает ли идентификатор функцию типа, производного от функции.
Количество аргументов функции.
Знак доллара $
является допустимым символом идентификатора в компиляторе Microsoft C++ (MSVC). MSVC также позволяет использовать фактические символы, представленные допустимыми диапазонами универсальных имен символов в идентификаторах. Чтобы использовать эти символы, необходимо сохранить файл в той кодировке, которая включает эти символы. В этом примере показано, как можно взаимозаменяемо использовать в коде расширенные символы и универсальные имена символов.
// extended_identifier.cpp
// In Visual Studio, use File, Advanced Save Options to set
// the file encoding to Unicode codepage 1200
struct テスト // Japanese 'test'
{
void トスト() {} // Japanese 'toast'
};
int main() {
テスト \u30D1\u30F3; // Japanese パン 'bread' in UCN form
パン.トスト(); // compiler recognizes UCN or literal form
}
Диапазон разрешенных символов в идентификаторе шире, чем при компиляции кода C++/CLI. Идентификаторы в коде, скомпилированном с помощью /clr, должны соответствовать стандарту ECMA-335: Common Language Infrastructure (CLI).
Завершение блока, относящегося только к системам Майкрософт
Первый символ идентификатора должен быть алфавитным символом (в верхнем или нижнем регистре) или символом подчеркивания ( _ ). Поскольку в идентификаторах C++ учитывается регистр, идентификаторы fileName
и FileName
различаются.
Идентификаторы не могут иметь то же написание и регистр, что и ключевые слова. Идентификаторы, в которых содержатся ключевые слова, являются допустимыми. Например, идентификатор Pint
будет допустимым даже несмотря на то, что в него входит ключевое слово int
.
Использование двух последовательных символов подчеркивания (___) в идентификаторе или один начальный символ подчеркивания, за которым следует буква буквы, зарезервировано для реализаций C++ во всех область. В области видимости файла не следует использовать идентификаторы, начинающиеся с одного символа подчеркивания, за которым следует строчная буква. Это связано с возможными конфликтами с уже существующими или будущими зарезервированными идентификаторами.
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по