Udostępnij za pośrednictwem


typedef — specyfikator

Deklaracja typedef wprowadza nazwę, która w swoim zakresie staje się synonimem typu podanego przez część type-declaration deklaracji.

typedef type-declaration synonym;

Uwagi

Deklaracji typedef można używać do tworzenia krótszych, bardziej znaczących nazw typów już zdefiniowanych przez język lub zdefiniowanych ręcznie.Nazwy zdefiniowane przez typedef pozwalają na hermetyzację szczegółów implementacji, które mogą się zmieniać.

W przeciwieństwie do deklaracji class, struct, union, i enum deklaracje typedef nie wprowadzają nowych typów - wprowadzą one nowe nazwy istniejących typów.

Nazwy typedef dzielą obszar nazw ze zwykłymi identyfikatorami.Program może mieć więc nazwę typedef i identyfikator o zakresie lokalnym o tej samej nazwie.

Aby uzyskać więcej informacji, zobacz:

Przykład

// typedef_specifier1.cpp
typedef char FlagType;

int main()
{
}

void myproc( int )
{
    int FlagType;
}

Podczas deklarowania identyfikatora o zakresie lokalnym o tej samej nazwie co element typedef lub podczas deklarowania elementu struktury lub unii w tym samym zakresie lub w zakresie wewnętrznym, należy określić specyfikatora typu.Na przykład:

typedef char FlagType;
const FlagType x;

Aby ponownie użyć nazwy FlagType dla identyfikatora, elementu struktury lub unii musi zostać dostarczony typ:

const int FlagType;  // Type specifier required

Nie wystarczy powiedzieć

const FlagType;      // Incomplete specification

ponieważ FlagType uważa się za część typu, a nie identyfikatora, który jest jest ponownie deklarowany.Taką deklarację uważa się za niedozwoloną, tak jak

int;  // Illegal declaration 

Można zadeklarować dowolny typ z typedef, w tym wskaźnik, funkcję i typy tablicowe.Można zadeklarować nazwę typedef wskaźnika na strukturę lub unię przed zdefiniowaniem struktury lub unii, tak długo jak definicja ma taką samą widoczność jak deklaracja.

Przykłady

Jednym z zastosowań deklaracji typedef jest sprawienie deklaracji bardziej jednolitymi i zwartymi.Na przykład:

typedef char CHAR;          // Character type.
typedef CHAR * PSTR;        // Pointer to a string (char *).
PSTR strchr( PSTR source, CHAR target );
typedef unsigned long ulong;
ulong ul;     // Equivalent to "unsigned long ul;"

Aby użyć typedef do określania typów podstawowych i pochodnych w tej samej deklaracji, można rozdzielić deklaratory przecinkami.Na przykład:

typedef char CHAR, *PSTR;

W następującym przykładzie podano typ DRAWF dla funkcji niezwracającej wartości i przyjmującej dwa argumenty typu int:

typedef void DRAWF( int, int );

Po powyższym wyrażeniu typedef, deklaracja

DRAWF box; 

byłaby równoważna z deklaracją

void box( int, int );

typedef często łączy się z struct aby zadeklarować i nazwać typy zdefiniowane przez użytkownika:

// typedef_specifier2.cpp
#include <stdio.h>

typedef struct mystructtag
{
    int   i;
    double f;
} mystruct;

int main()
{
    mystruct ms;
    ms.i = 10;
    ms.f = 0.99;
    printf_s("%d   %f\n", ms.i, ms.f);
}
  

Zobacz też

Informacje

Słowa kluczowe języka C++

Inne zasoby

C++ Type Names