Embora C não permita a criação de novos tipos de dados, ela oferece uma facilidade para criar novos nomes para os tipos existentes, sejam eles básicos ou derivados. Este mecanismo, typedef, permite principalmente melhorar a facilidade de compreensão de programas.
A forma geral de uma definição de nome de tipo é
typedef tipo novo_nome;
Por exemplo, os tipos de estruturas data e dados_pessoais definidos anteriormente poderiam ser associados a nomes de tipos Data e Pessoa respectivamente pelas declarações
typedef struct data Data;
typedef struct dados_pessoais Pessoa;
Com estas definições, as declarações do programa que apresenta a idade de pessoas poderiam ser reescritas como
/*
* Exemplo calcula idade com definicao de nomes de tipos
*/
/* Define estruturas e nomes de tipos */
typedef enum sex {masculino, feminino} Sexo;
typedef struct data {
int dia;
int mes;
int ano;
} Data;
typedef struct dados_pessoais {
char nome[40];
Data nascimento;
Sexo genero;
} Pessoa;
int main() {
Data hoje;
Pessoa aluno_pt;
int idade;
/* prototipos: */
int calc_idade(Pessoa, Data);
Data le_hoje();
Pessoa le_aluno();
...
}
Outros exemplos de uso de typedef são
typedef unsigned int Tamanho;
typedef enum {false=0, true} Boolean;