Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

c:definicao_de_tipos [2023/08/15 14:24] – criada mazieroc:definicao_de_tipos [2023/08/15 14:24] (atual) maziero
Linha 1: Linha 1:
 +====== Definição de tipos ======
  
 +A palavra reservada ''typedef'' permite definir (ou redefinir) um tipo de dado. Ela pode ser aplicada a qualquer tipo da linguagem C, mas é particularmente útil com //structs//, pois simplifica a declaração de variáveis e parâmetros de tipo //struct//.
 +
 +Forma geral:
 +
 +  typedef <tipo existente> <novo tipo> ;
 +
 +Exemplo com escalares:
 +
 +<code c>
 +typedef unsigned long int uint32_t ; // "uint32_t" equivale a "unsigned long int"
 +
 +
 +uint32_t a, b ;  // aloca duas variáveis do tipo uint32_t
 +</code>
 +
 +Exemplo com //structs//:
 +
 +<code c>
 +struct pac_t
 +{
 +  char  nome[100] ;
 +  short idade ;
 +  short quarto ;
 +} ;
 +
 +typedef struct pac_t paciente_t ;  // struct pac_t -> paciente_t
 +
 +// declaração e alocação
 +paciente_t pac1, pac2 ;
 +</code>
 +
 +Ou redefinindo o próprio tipo ''paciente_t'' ;
 +
 +<code c>
 +struct paciente_t
 +{
 +  char  nome[100] ;
 +  short idade ;
 +  short quarto ;
 +} ;
 +
 +typedef struct paciente_t paciente_t ;
 +
 +// declaração e alocação
 +paciente_t pac1, pac2 ;
 +</code>
 +
 +Ou ainda mais "enxuto":
 +
 +<code c>
 +typedef struct paciente_t
 +{
 +  char  nome[100] ;
 +  short idade ;
 +  short quarto ;
 +} paciente_t ;
 +
 +// declaração/alocação
 +paciente_t pac1, pac2 ;
 +</code>
 +
 +<note important>
 +O uso de ''typedef'' com structs é **desaconselhado** por alguns guias de estilo de código em C, por "esconder" o fato que um determinado tipo é uma ''struct'', o que pode tornar mais difícil a leitura do código.
 +</note>