Especificador de TypeDef
A typedef declaração apresenta um nome que, dentro de seu escopo, um sinônimo para o tipo de dado por torna-se a declaração de tipo parte da declaração.
typedef type-declaration synonym;
Comentários
Você pode usar as declarações de typedef para construir nomes mais curtos ou mais significativas para tipos já definidos pelo idioma ou para tipos que você tenha declarado.Nomes de TypeDef permitem encapsular os detalhes de implementação que podem ser alterados.
Em contraste com o classe, struct, união, e enum declarações, typedef declarações não apresentam novos tipos — eles introduzem novos nomes para tipos existentes.
Compartilhamento de nomes de TypeDef a espaço para nome com identificadores comuns.Portanto, um programa pode ter um nome de typedef e um identificador de escopo de local com o mesmo nome.
Para obter mais informações, consulte:
Exemplo
// typedef_specifier1.cpp
typedef char FlagType;
int main()
{
}
void myproc( int )
{
int FlagType;
}
Ao declarar um identificador de escopo de local com o mesmo nome como um typedef ou ao declarar um membro de uma estrutura ou união no mesmo escopo ou em um escopo interno, o especificador de tipo deve ser especificado.Por exemplo:
typedef char FlagType;
const FlagType x;
Para reutilizar o FlagType deve ser fornecido um nome para um identificador, um membro da estrutura, ou um membro da união, do tipo:
const int FlagType; // Type specifier required
Não é suficiente dizer
const FlagType; // Incomplete specification
porque o FlagType é considerada como parte do tipo, não um identificador que está sendo declarado novamente.Essa declaração é considerada como uma declaração ilegal como
int; // Illegal declaration
Você pode declarar qualquer tipo com typedef, incluindo o ponteiro, função e tipos de matriz.Você pode declarar um nome de typedef para um ponteiro para uma estrutura ou tipo de união antes de definir o tipo de estrutura ou união, contanto que a definição tenha a mesma visibilidade que a declaração.
Exemplos
Um uso typedef declarações é fazer declarações mais uniforme e compacto.Por exemplo:
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;"
Para usar typedef para especificar os tipos de derivadas e fundamentais na mesma declaração, você pode separar o declaradores com vírgulas.Por exemplo:
typedef char CHAR, *PSTR;
O exemplo a seguir fornece o tipo de DRAWF para uma função que retornam nenhum valor e dê dois argumentos int:
typedef void DRAWF( int, int );
Após acima typedef instrução, a declaração
DRAWF box;
seria equivalente à declaração
void box( int, int );
typedefgeralmente é combinado com struct para declarar e nomear tipos definidos pelo usuário:
// 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);
}