Sdílet prostřednictvím


typedef – specifikátor

Definice typedef zavádí název, který se, v rámci své působnosti, stane synonymem pro typ daný částí deklarace typu deklarace.

typedef type-declaration synonym;

Poznámky

Deklarace typedef je možné použít pro vytvoření kratších nebo výstižnějších názvů pro typy, které jsou již definovány jazykem, nebo vlastní deklarované typy.Jména typedef umožňují zapouzdřit podrobnosti implementace, které se mohou změnit.

Na rozdíl od deklarací class, struct, union a enum, deklarace typedef nezavádí nový typ, ale zavádí nová jména pro existující typy.

Názvy typedef sdílí obor názvů s běžnými identifikátory.Program tedy může mít typedef název a identifikátor místního rozsahu se stejným názvem.

Další informace naleznete v části:

Příklad

// typedef_specifier1.cpp
typedef char FlagType;

int main()
{
}

void myproc( int )
{
    int FlagType;
}

Při deklarování identifikátoru místního rozsahu se stejným názvem jako typedef nebo při deklarování členu struktury nebo union ve stejném rozsahu nebo ve vnitřním rozsahu, musí být určen specifikátor typu.Příklad:

typedef char FlagType;
const FlagType x;

Pro znovupoužíti jména FlagType pro identifikátor, člen struktury nebo člen union, musí být určen typ:

const int FlagType;  // Type specifier required

Nestačí říct

const FlagType;      // Incomplete specification

protože FlagType se rozumí část typu, nikoli identifikátor, který je znovu deklarován.Tato deklarace je neplatná deklarace jako například

int;  // Illegal declaration 

Pomocí typedef je možné deklarovat jakýkoli typ, včetně ukazatele, funkce a typů polí.Je možné deklarovat název typedef pro ukazatel na strukturu nebo typ union před definováním struktury nebo typu union, dokud má definice stejnou viditelnost jako deklarace.

Příklady

Jedno z použití deklarací typedef je vytvoření jednotnějších a kompaktnějších deklarací.Příklad:

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;"

Pro použití typedef pro specifikaci základních a odvozených typů ve stejné deklaraci, je možné oddělit deklarátory čárkami.Příklad:

typedef char CHAR, *PSTR;

Následující příklad poskytuje typ DRAWF pro funkci nevracející žádnou hodnotu a přijímající dva celočíselné argumenty:

typedef void DRAWF( int, int );

Po výše uvedeném příkazu typedef, bude deklarace

DRAWF box; 

ekvivalentní deklaraci

void box( int, int );

typedef je často spojeno se struct pro deklarování a pojmenování uživatelem definovaných typů:

// 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);
}
  

Viz také

Referenční dokumentace

Klíčová slova jazyka C++

Další zdroje

C++ Type Names