identificatore di typedef
In typedef la dichiarazione viene introdotto un nome che, all'interno del relativo ambito, diventa un sinonimo del tipo fornito da dichiarazione di tipo parte della dichiarazione.
typedef type-declaration synonym;
Note
È possibile utilizzare le dichiarazioni typedef per costruire più breve o più nomi significativi per i tipi già definiti dal linguaggio o per i tipi dichiarato.I nomi di typedef consentono di incapsuliate i dettagli di implementazione che possono cambiare.
Al contrario classe, struct, unionee enum dichiarazioni, typedef le dichiarazioni non introducono nuovi tipi - introducono nuovi nomi per i tipi esistenti.
i nomi di typedef condividono spazio dei nomi con gli identificatori comuni.Di conseguenza, un programma può avere un nome typedef e un identificatore di locale-ambito dallo stesso nome.
Per ulteriori informazioni, vedere:
Esempio
// typedef_specifier1.cpp
typedef char FlagType;
int main()
{
}
void myproc( int )
{
int FlagType;
}
Quando si dichiara un identificatore di locale-ambito con lo stesso nome come typedef, o quando si dichiara un membro di una struttura o unione nello stesso ambito o in un ambito interno, l'identificatore del tipo deve essere specificato.Di seguito è riportato un esempio:
typedef char FlagType;
const FlagType x;
Per riutilizzare FlagType il nome di un identificatore, un membro della struttura, o un membro, il tipo deve essere fornito:
const int FlagType; // Type specifier required
Non è sufficiente per indicare
const FlagType; // Incomplete specification
poiché FlagType viene utilizzato per far parte del tipo, non un identificatore che è ridichiarata.Questa dichiarazione viene effettuata per essere una dichiarazione non valida come
int; // Illegal declaration
È possibile dichiarare qualsiasi tipo con il typedef, incluso il puntatore, la funzione e i tipi di matrice.È possibile dichiarare un nome typedef per un puntatore a un tipo di unione o della struttura prima di definire il tipo di struttura o di unione, purché la definizione ha la stessa visibilità della dichiarazione.
Esempi
un utilizzo di typedef le dichiarazioni necessario rendere a dichiarazioni più uniforme e compatto.Di seguito è riportato un esempio:
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;"
Per utilizzare typedef per specificare la base e i tipi derivati nella stessa dichiarazione, è possibile separare i dichiaratori con virgole.Di seguito è riportato un esempio:
typedef char CHAR, *PSTR;
Nell'esempio seguente viene illustrato il tipo DRAWF per una funzione che non restituisce valori e che accetta due argomenti di tipo int:
typedef void DRAWF( int, int );
Dopo il di sopra typedef istruzione, la dichiarazione
DRAWF box;
sono equivalenti alla dichiarazione
void box( int, int );
typedef combina spesso con struct per dichiarare e denominare i tipi definiti dall'utente:
// 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);
}