Идентификаторы (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++ во всех область. В области видимости файла не следует использовать идентификаторы, начинающиеся с одного символа подчеркивания, за которым следует строчная буква. Это связано с возможными конфликтами с уже существующими или будущими зарезервированными идентификаторами.

См. также

Лексические соглашения