UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2017 - Enero 2018

3.2. Definición de sinónimos de tipos con typedef

C permite definir sinónimos para los tipos de datos mediante el operador typedef y la siguiente sintaxis:

typedef tipo_de_datos_ya_definido sinónimo

Por ejemplo, la siguiente línea define entero como tipo sinónimo de int.

typedef int entero

Este operador se usa con frecuencia para abreviar los nombres de las estructuras de datos. El nombre del tipo de datos de una estructura es struct seguido de su nombre. Con typedef se puede definir un sinónimo más compacto tal y como se muestra en el siguiente ejemplo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#define SIZE_FIRST 100
#define SIZE_LAST 200
#define NUM_CONTACTS 100

/* Definición de la estructura */
struct contact_information 
{
    char firstname[SIZE_FIRST];
    char lastname[SIZE_LAST];
    unsigned int homephone;
    unsigned int mobilephone;
};
/* Declaración de variable */
struct contact_information person2;
/* Definición del sinónimo */
typedef struct contact_information contact_info;
/* Declaración utilizando el sinónimo */
contact_info person1, contacts[NUM_CONTACTS];

La línea 16 define contact_info como sinónimo de la estructura. La linea 18 utiliza este sinónimo para declarar dos variables más de este tipo. La definición de una estructura y un sinónimo se pueden combinar en un único bloque tal y como se muestra en el siguiente ejemplo, aunque no es aconsejable, por legibilidad:

/* Definición de la estructura y su sinónimo */
typedef struct contact_information 
{
    char firstname[SIZE_FIRST];
    char lastname[SIZE_LAST];
    unsigned int homephone;
    unsigned int mobilephone;
} contact_info;