Sdílet prostřednictvím


Deklarace TypeDef

Deklarace typedef je prohlášení s typedef jako třídy úložiště.Declarator se stane nový typ.Můžete vytvořit názvy kratší nebo smysluplnější c již definované typy nebo typy, které jsou deklarovány typedef prohlášení.Názvy TypeDef umožňují zapouzdření podrobnosti implementace, které mohou změnit.

Deklarace typedef interpretována stejným způsobem jako proměnné nebo deklaraci funkce, ale identifikátoru namísto typ zadaný v prohlášení, za předpokladu, že se stane synonymum typu.

Syntaxe

  • declaration:
    Specifikátory prohlášení init-declarator seznam opt**;**

  • Specifikátory prohlášení:
    prohlášení specifikátoru třídy úložiště specifikátory opt

    specifikátor typu prohlášení specifikátory opt

    typ kvalifikátoru prohlášení specifikátory opt

  • úložiště tříd::
    typedef

  • specifikátor typu:
    anulovat

    char

    short

    int

    long

    float

    double

    podepsaný

    bez znaménka

    Struktura nebo unie specifikátor

    Specifikátor enum

    Název definice TypeDef

  • Název definice TypeDef:
    identifikátor

Poznámka: definice typedef prohlášení není vytvořit typy.Vytvoří synonyma pro existující typy nebo názvy typů, které může být určen jinými způsoby.Název definice typedef slouží jako specifikátor typu, lze kombinovat s některými specifikátorech typu, ale jiné ne.Modifikátory přijatelné patří const a volatile.

Názvy TypeDef sdílet název místa s běžným identifikátory (viz Mezery v názvu Další informace).Program lze tudíž typedef název a identifikátor oboru místního se stejným názvem.Příklad:

typedef char FlagType;

int main()
{
}

int myproc( int )
{
    int FlagType;
}

Při deklarování identifikátor oboru místního stejný název jako definice typu nebo deklaraci struktury nebo unie ve stejném oboru nebo vnitřní oboru, musí být zadán specifikátor typu.Tento příklad ukazuje tato omezení:

typedef char FlagType;
const FlagType x;

Znovu použít FlagType název identifikátoru, člen struktura nebo člen union, typ musí být uvedeny:

const int FlagType;  /* Type specifier required */

Nestačí říci

const FlagType;      /* Incomplete specification */

protože FlagType bude součástí typu není identifikátor, který je znovu deklarována.Toto prohlášení se rozumí nelegální prohlášení jako

int;  /* Illegal declaration */

Chcete-li deklarovat libovolného typu s typedef, včetně ukazatele, funkce a typy polí.Můžete deklarovat název definice typedef ukazatel na strukturu nebo typ union před definovat typ struktury nebo unie jako definice jsou stejně viditelné jako prohlášení.

Definice TypeDef názvy lze zlepšit čitelnost kódu.Všechny tři následující prohlášení o signal zadejte přesně stejný typ, nejprve bez provedení jakékoli názvy 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 */

Příklady

Následující příklady ilustrují typedef prohlášení:

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

Všimněte si, že WHOLE nelze nyní použít v deklaraci proměnné jako WHOLE i; nebo const WHOLE i;.Však prohlášení long WHOLE i; by bylo neplatné.

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

Toto prohlášení prohlašuje GROUP jako typ struktury se tři členové.Od tag struktury club, také zadán název definice typedef (GROUP) nebo značka struktury lze v prohlášení.Musíte použít klíčové slovo struktura se značkou a nelze použít s názvem typedef struct klíčové slovo.

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

Typ PG je deklarován jako ukazatel na GROUP typ, který je zase definován jako typ struktury.

typedef void DRAWF( int, int );

Tento příklad představuje typ DRAWF funkce vracet žádnou hodnotu a vezme dva argumenty int.To například znamená, že prohlášení

DRAWF box; 

je ekvivalentní prohlášení

void box( int, int );

Viz také

Referenční dokumentace

Definice TypeDef specifikátor