Identyfikatory (C++)
Identyfikator to sekwencja znaków używanych do oznaczania jednego z następujących elementów:
Nazwa obiektu lub zmiennej
Nazwa klasy, struktury lub unii
Wyliczona nazwa typu
Składowa klasy, struktury, unii lub wyliczenia
Funkcja lub funkcja składowa klasy
nazwa definicji typedef
Label name
Nazwa makra
Parametr makra
Następujące znaki są dozwolone jako dowolny znak identyfikatora:
_ 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
Niektóre zakresy uniwersalnych nazw znaków są również dozwolone w identyfikatorze. Nazwa znaku uniwersalnego w identyfikatorze nie może wyznaczyć znaku sterującego lub znaku w podstawowym zestawie znaków źródłowych. Aby uzyskać więcej informacji, zobacz Zestawy znaków. Te zakresy liczb punktów kodu Unicode są dozwolone jako uniwersalne nazwy znaków dla dowolnego znaku w identyfikatorze:
- 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
Następujące znaki są dozwolone jako dowolny znak w identyfikatorze z wyjątkiem pierwszego:
0 1 2 3 4 5 6 7 8 9
Te zakresy numerów punktów kodu Unicode są również dozwolone jako uniwersalne nazwy znaków dla dowolnego znaku w identyfikatorze, z wyjątkiem pierwszego:
- 0300-036F, 1DC0-1DFF, 20D0-20FF, FE20-FE2F
Specyficzne dla firmy Microsoft
Istotne są tylko pierwsze 2048 znaki identyfikatorów języka Microsoft C++. Nazwy typów zdefiniowanych przez użytkownika są "ozdobione" przez kompilator w celu zachowania informacji o typie. Nazwa wynikowa, w tym informacje o typie, nie może być dłuższa niż 2048 znaków. (Zobacz Nazwy ozdobione, aby uzyskać więcej informacji). Czynniki, które mogą mieć wpływ na długość identyfikatora ozdobionego, to:
Określa, czy identyfikator określa obiekt typu zdefiniowanego przez użytkownika, czy typ pochodzący z typu zdefiniowanego przez użytkownika.
Określa, czy identyfikator określa funkcję, czy typ pochodzący z funkcji.
Liczba argumentów funkcji.
Znak $
dolara jest prawidłowym znakiem identyfikatora w kompilatorze Microsoft C++ (MSVC). MSVC umożliwia również używanie rzeczywistych znaków reprezentowanych przez dozwolone zakresy uniwersalnych nazw znaków w identyfikatorach. Aby użyć tych znaków, należy zapisać plik przy użyciu strony kodowej kodowania pliku, która je zawiera. W tym przykładzie pokazano, jak można używać zarówno znaków rozszerzonych, jak i uniwersalnych nazw znaków w kodzie.
// 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
}
Zakres znaków dozwolonych w identyfikatorze jest mniej restrykcyjny podczas kompilowania kodu C++/CLI. Identyfikatory w kodzie skompilowanym przy użyciu /clr powinny być zgodne ze standardową ecMA-335: Common Language Infrastructure (CLI).
END Microsoft Specific
Pierwszy znak identyfikatora musi być znakiem alfabetycznym, wielkimi lub małymi literami albo podkreślenia ( _ ). Ponieważ w identyfikatorach języka C++ jest rozróżniana wielkość liter, fileName
różni się ona od FileName
.
Identyfikatory nie mogą być dokładnie takie same jak pisownia i wielkość liter jak słowa kluczowe. Identyfikatory zawierające słowa kluczowe są legalne. Na przykład Pint
jest identyfikatorem prawnym, mimo że zawiera int
element , który jest słowem kluczowym.
Użycie dwóch sekwencyjnych znaków podkreślenia ( __ ) w identyfikatorze lub pojedynczego wiodącego podkreślenia, po którym następuje litera główna, jest zarezerwowana dla implementacji języka C++ we wszystkich zakresach. Należy unikać używania jednego wiodącego podkreślenia, po którym następuje mała litera nazw z zakresem plików z powodu możliwych konfliktów z bieżącymi lub przyszłymi identyfikatorami zarezerwowanymi.
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla