Freigeben über


typedef-Spezifizierer

Eine typedef-Deklaration führt einen Namen ein, der innerhalb seines Gültigkeitsbereichs ein Synonym für den Typ wird, der von dem Teil Deklarationstyp der Deklaration angegeben wird.

typedef type-declaration synonym;

Hinweise

Sie können typedef-Deklarationen verwenden, um kürzere oder aussagekräftigere Namen für Typen zu erstellen, die bereits von der Programmiersprache definiert sind, oder für Typen, die deklariert wurden. Mithilfe von typedef-Namen können Sie die Implementierungsdetails kapseln, die sich möglicherweise ändern.

Im Gegensatz zu den Deklarationen class, struct, union und enum führen typedef-Deklarationen keine neuen Typen ein – sie führen neue Namen für vorhandene Typen ein.

Typedef-Namen verwenden denselben Namespace wie gewöhnliche Bezeichner. Aus diesem Grund kann ein Programm einen typedef-Namen und einen Bezeichner für den lokalen Gültigkeitsbereich mit dem gleichen Namen aufweisen.

Weitere Informationen finden Sie unter:

Beispiel

// typedef_specifier1.cpp
typedef char FlagType;

int main()
{
}

void myproc( int )
{
    int FlagType;
}

Wenn ein Bezeichner für den lokalen Gültigkeitsbereich mit dem gleichen Namen wie eine typedef deklariert wird oder wenn ein Member einer Struktur oder Union im gleichen Gültigkeitsbereich oder im inneren Bereich deklariert wird, muss der Typspezifizierer angegeben werden. Beispiel:

typedef char FlagType;
const FlagType x;

Um den FlagType-Namen für einen Bezeichner, einen Strukturmember oder einen Unionsmember wiederzuverwenden, muss der Typ angegeben werden:

const int FlagType;  // Type specifier required

Folgendes ist nicht ausreichend:

const FlagType;      // Incomplete specification

Das liegt daran, dass FlagType als ein Teil des Typs angesehen wird, und nicht als Bezeichner, der neu deklariert wird. Diese Deklaration wird als ungültige Deklaration angesehen, wie etwa

int;  // Illegal declaration 

Sie können einen beliebigen Typ mit typedef deklarieren, einschließlich Zeiger-, Funktions- und Arraytypen. Sie können einen typedef-Namen für einen Zeiger auf einen Struktur- oder einen Union-Typ deklarieren, bevor Sie den Struktur- oder Union-Typ definieren, solange die Definition die gleiche Sichtbarkeit wie die Deklaration aufweist.

Beispiele

typedef-Deklarationen können u. a. verwendet werden, um Deklarationen einheitlicher und komprimierter zu machen. Beispiel:

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

Um mithilfe von typedef grundlegende und abgeleitete Typen in der gleichen Deklaration anzugeben, können Sie Deklaratoren durch Kommas voneinander trennen. Beispiel:

typedef char CHAR, *PSTR;

Im folgenden Beispiel wird der Typ DRAWF für eine Funktion bereitgestellt, die keinen Wert zurückgibt und zwei int-Argumente akzeptiert:

typedef void DRAWF( int, int );

Nach der oben erwähnten typedef-Anweisung entspräche die Deklaration

DRAWF box; 

dieser Deklaration:

void box( int, int );

typedef wird häufig mit struct kombiniert, um benutzerdefinierte Typen zu deklarieren und zu benennen:

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

Siehe auch

Referenz

C++-Schlüsselwörter

Weitere Ressourcen

C++ Type Names