spécificateur de typedef
Une déclaration d' typedef présente un nom qui, dans sa portée, devient un synonyme de le type indiqué par la partie de déclaration de type de la déclaration.
typedef type-declaration synonym;
Notes
Vous pouvez utiliser des déclarations de typedef pour construire des noms plus courts ou plus explicites pour les types déjà définis par le langage ou pour les types que vous avez déclarés.Les noms de typedef vous permettent d'encapsuler les détails d'implémentation qui peuvent changer.
Contrairement à classe, struct, union, et les déclarations d' enum , déclarations d' typedef ne présentent pas de nouveaux types - ils présentent de nouveaux noms pour des types existants.
les noms de typedef partagent l'espace de noms avec les identificateurs ordinaires.Par conséquent, un programme peut avoir un nom de typedef et un identificateur de portée locale par le même nom.
Pour plus d'informations, consultez :
Exemple
// typedef_specifier1.cpp
typedef char FlagType;
int main()
{
}
void myproc( int )
{
int FlagType;
}
En déclarant un identificateur de portée locale par le même nom qu'un typedef, ou en déclarant un membre d'une structure ou d'une union dans la même portée ou dans une portée interne, le spécificateur de type doit être spécifié.Par exemple :
typedef char FlagType;
const FlagType x;
Pour réutiliser le nom d' FlagType pour un identificateur, un membre de structure, ou d'union, le type doit être fourni :
const int FlagType; // Type specifier required
Il n'est pas suffisant pour indiquer
const FlagType; // Incomplete specification
parce qu' FlagType est pris pour faire partie du type, pas un identificateur qui est redéclarée.Cette déclaration est prise en une déclaration non conforme comme
int; // Illegal declaration
Vous pouvez déclarer tout type avec le typedef, y compris le pointeur, la fonction, et les types tableau.Vous pouvez déclarer un nom de typedef pour un pointeur vers une structure ou un type union avant de définir la structure ou le type d'union, tant que la définition a la même visibilité que la déclaration.
Exemples
Une utilisation des déclarations d' typedef est de rendre les déclarations plus d'uniforme et de se compacter.Par exemple :
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;"
Pour utiliser typedef pour spécifier fondamental et dérivé dans la même déclaration, vous pouvez séparer des déclarateurs par des virgules.Par exemple :
typedef char CHAR, *PSTR;
L'exemple suivant fournit le type DRAWF pour une fonction ne retourne aucune valeur et en prenant deux arguments d'international :
typedef void DRAWF( int, int );
Après les instructions ci-dessus d' typedef , la déclaration
DRAWF box;
et sont équivalents à la déclaration
void box( int, int );
typedef est souvent associée à struct pour déclarer et nommer les types définis par l'utilisateur :
// 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);
}