Udostępnij za pośrednictwem


Element TypeDef deklaracji

Deklaracja element typedef jest deklaracja z elementu typedef jako klasy magazynowania.; Niewłaściwy deklarator staje się nowego typu.Element typedef deklaracji można użyć do konstruowania krótszy lub bardziej znaczące nazwy dla typów zdefiniowanych przez c lub typów, które zostały zgłoszone.Element TypeDef nazwy umożliwiają hermetyzowania szczegóły dotyczące implementacji, które mogą ulec zmianie.

Deklaracja element typedef jest interpretowane w taki sam sposób jak zmienna lub deklaracji funkcji, ale identyfikator, zamiast typu określonego w oświadczeniu, zakładając staje się synonimem typu.

Składnia

  • declaration:
    Specyfikatory deklaracji w init listy; niewłaściwy deklarator opt**;**

  • Specyfikatory deklaracji:
    Specyfikator klasy magazynowania deklaracji Specyfikatory opt

    Deklaracja Specyfikatory specyfikatora typu opt

    Typ kwalifikatora deklaracji Specyfikatory opt

  • Specyfikator klasy magazynowania:
    typedef

  • Specyfikator typu:
    nieważne

    CHAR

    krótkie

    int

    długie

    Pływak

    podwójne

    podpisane

    niepodpisane

    Specyfikator struct lub Unii

    Specyfikator Enum

    Nazwa elementu TypeDef

  • Nazwa elementu TypeDef:
    Identyfikator

Uwaga deklaracji typedef nie powoduje utworzenia typów.Tworzy synonimów dla istniejących typów lub nazwy dla typów, które może być określony w inny sposób.Nazwa elementu typedef używanego jako specyfikatora typu, można połączyć z niektórych specyfikatorze typu, ale niekoniecznie.Modyfikatory dopuszczalne obejmują const i volatile.

Element TypeDef nazwy udostępniać obszar nazw identyfikatorów zwykłych (zobacz Obszarów nazw Aby uzyskać więcej informacji).W związku z tym program może mieć nazwę elementu typedef i identyfikatora zakresu lokalnego o tej samej nazwie.Na przykład:

typedef char FlagType;

int main()
{
}

int myproc( int )
{
    int FlagType;
}

W przypadku deklarowania identyfikator zakresu lokalnego o tej samej nazwie jak element typedef lub deklarowanie członek struktury lub Unii, w tym samym zakresie lub w zakresie wewnętrznej, musi być określona specyfikatora typu.Ten przykład ilustruje to ograniczenie:

typedef char FlagType;
const FlagType x;

Aby ponownie użyć FlagType należy podać nazwę dla identyfikatora, członek struktury lub członkiem Unii, typ:

const int FlagType;  /* Type specifier required */

Nie jest wystarczające, aby powiedzieć

const FlagType;      /* Incomplete specification */

Ponieważ FlagType przyjmuje się część tego typu, nie identyfikator, który jest przy redeclared.Deklaracja ta przyjmuje się nielegalnych deklaracji, podobnie jak

int;  /* Illegal declaration */

Można zadeklarować dowolnego typu z element typedef, w tym wskaźnik, funkcji i typów tablicowych.Nazwa elementu typedef dla wskaźnika do struktury lub Unii typu można zadeklarować przed zdefiniowaniem typu Struktura lub Unii tak długo, jak definicja ma taką samą widoczność jak zgłoszenia.

Element TypeDef nazwy, można poprawić czytelność kodu.Wszystkie trzy następujące deklaracje signal określić dokładnie tego samego typu, najpierw bez dokonywania wszelkich nazwy elementu typedef.

typedef void fv( int ), (*pfv)( int );  /* typedef declarations */

void ( *signal( int, void (*) (int)) ) ( int );
fv *signal( int, fv * );   /* Uses typedef type */
pfv signal( int, pfv );    /* Uses typedef type */

Przykłady

Poniższe przykłady ilustrują typedef deklaracji:

typedef int WHOLE; /* Declares WHOLE to be a synonym for int */

Należy zauważyć, że WHOLE może teraz być używany w deklaracji zmiennej takich jak WHOLE i; lub const WHOLE i;.Jednakże deklaracji long WHOLE i; może być nielegalne.

typedef struct club 
{
    char name[30];
    int size, year;
} GROUP;

Ta instrukcja deklaruje GROUP jako typ struktury z trzech członków.Od znaczników struktury club, również jest określony, nazwa elementu typedef (GROUP) lub znaczników struktury mogą być używane w deklaracji.Należy użyć słowa kluczowego struct ze znacznikiem i nie można użyć słowa kluczowego struct z nazwą elementu typedef.

typedef GROUP *PG; /* Uses the previous typedef name 
                      to declare a pointer            */

Typ PG jest zadeklarowana jako wskaźnik do GROUP typu, który z kolei jest zdefiniowana jako typ struktury.

typedef void DRAWF( int, int );

W poniższym przykładzie przedstawiono typ DRAWF dla funkcji zwracać wartość nie i podjęcie dwa argumenty int.Oznacza to, na przykład, że deklaracja

DRAWF box; 

jest odpowiednikiem deklaracji

void box( int, int );

Zobacz też

Informacje

element TypeDef specyfikatora