Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Una declaración de tipo typedef es una declaración con el typedef como clase de almacenamiento.El declarador se convierte en un nuevo tipo.Puede utilizar declaraciones typedef para construir más corto o más nombres descriptivos para tipos ya definido por C o de tipos declarados.Los nombres de Typedef permiten encapsula los detalles de implementación que pueden cambiar.
Una declaración de tipo typedef se interpreta como una variable o una declaración de función, pero el identificador, en lugar de suponer que el tipo especificado por la declaración, se convierte en un sinónimo para el tipo.
Sintaxis
declaration:
init-declarante-lista ; optde los declaración-especificadoresdeclaración-especificadores:
declaración-especificadores de almacenamiento-clase-especificador optdeclaración-especificadores de especificador de tipo opt
declaración-especificadores calificador de tipo opt
almacenamiento-clase-especificador:
typedefespecificador de tipo:
voidchar
short
Valor int.
long
float
double
Signed
Unsigned
struct-o-unión-especificador
enum-especificador
typedef-nombre
typedef-nombre:
identifier
Observe que una declaración de tipo typedef no crea tipos.Crea los sinónimos para los tipos existentes, o nombres para los tipos que se podrían especificados de otras maneras.Cuando un nombre typedef se utiliza como especificador de tipo, puede combinarse con algunos especificadores de tipo, pero no para otros.Incluyen aceptable const y volatilemodifiers.
Los nombres de Typedef comparten el espacio de nombres con identificadores normales (vea espacios de nombres para obtener más información).Por consiguiente, un programa puede tener un nombre typedef y un identificador de valor local-ámbito por el mismo nombre.Por ejemplo:
typedef char FlagType;
int main()
{
}
int myproc( int )
{
int FlagType;
}
Al declarar un identificador de valor local-ámbito por el mismo nombre que un tipo typedef, o al declarar un miembro de una estructura o unión en el mismo ámbito o en un ámbito interno, el especificador de tipo debe ser especificado.este ejemplo muestra esta restricción:
typedef char FlagType;
const FlagType x;
Para reutilizar el nombre de FlagType para un identificador, un miembro de una estructura, o unión, el tipo debe ser proporcionado:
const int FlagType; /* Type specifier required */
no es suficiente decir
const FlagType; /* Incomplete specification */
dado que FlagType se toma para formar parte del tipo, no un identificador que volver.esta declaración se toma para ser una declaración no válida como
int; /* Illegal declaration */
Puede declarar cualquier tipo con typedef, incluidos puntero, función, y tipos de matriz.Puede declarar un nombre typedef para un puntero a un tipo de estructura o unión antes de definir el tipo de estructura o unión, mientras la definición tiene la misma visibilidad que la declaración.
Los nombres de definiciones de tipos se pueden utilizar para mejorar la legibilidad del código.Los tres de las siguientes declaraciones de signal especifican exactamente el mismo tipo, el primer sin hacer uso de cualquier nombres typedef.
typedef void fv( int ), (*pfv)( int ); /* typedef declarations */
void ( *signal( int, void (*) (int)) ) ( int );
fv *signal( int, fv * ); /* Uses typedef type */
pfv signal( int, pfv ); /* Uses typedef type */
Ejemplos
Los ejemplos siguientes muestran declaraciones typedef:
typedef int WHOLE; /* Declares WHOLE to be a synonym for int */
Observe que WHOLE se puede utilizar ahora en una declaración de variable como WHOLE i; o const WHOLE i;.Sin embargo, la declaración long WHOLE i; sería válida.
typedef struct club
{
char name[30];
int size, year;
} GROUP;
esta instrucción declara GROUP como una estructura escrita con tres miembros.Desde una etiqueta de estructura, club, también se especifica, o el nombre typedef (GROUP) o la etiqueta de la estructura se puede utilizar en declaraciones.Debe utilizar la palabra clave struct con la etiqueta, y no se puede usar la palabra clave struct con el nombre typedef.
typedef GROUP *PG; /* Uses the previous typedef name
to declare a pointer */
Declare el tipo PG como puntero al tipo de GROUP , que a su vez se define como un tipo de estructura.
typedef void DRAWF( int, int );
este ejemplo proporciona el tipo DRAWF para una función que no devuelve ningún valor y que toma dos argumentos de int.Esto significa, por ejemplo, que la declaración
DRAWF box;
es equivalente a la declaración
void box( int, int );