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;