C - typedef

Le langage de programmation C fournit un mot-clé appelé typedef, que vous pouvez utiliser pour donner un nouveau nom à un type. Voici un exemple pour définir un termeBYTE pour les nombres à un octet -

typedef unsigned char BYTE;

Après cette définition de type, l'identifiant BYTE peut être utilisé comme abréviation pour le type unsigned char, for example..

BYTE  b1, b2;

Par convention, des lettres majuscules sont utilisées pour ces définitions pour rappeler à l'utilisateur que le nom du type est en réalité une abréviation symbolique, mais vous pouvez utiliser des minuscules, comme suit -

typedef unsigned char byte;

Vous pouvez utiliser typedefpour donner également un nom à vos types de données définis par l'utilisateur. Par exemple, vous pouvez utiliser typedef avec structure pour définir un nouveau type de données, puis utiliser ce type de données pour définir directement les variables de structure comme suit -

#include <stdio.h>
#include <string.h>
 
typedef struct Books {
   char title[50];
   char author[50];
   char subject[100];
   int book_id;
} Book;
 
int main( ) {

   Book book;
 
   strcpy( book.title, "C Programming");
   strcpy( book.author, "Nuha Ali"); 
   strcpy( book.subject, "C Programming Tutorial");
   book.book_id = 6495407;
 
   printf( "Book title : %s\n", book.title);
   printf( "Book author : %s\n", book.author);
   printf( "Book subject : %s\n", book.subject);
   printf( "Book book_id : %d\n", book.book_id);

   return 0;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Book  title : C Programming
Book  author : Nuha Ali
Book  subject : C Programming Tutorial
Book  book_id : 6495407

typedef vs #define

#define est une directive C qui est également utilisée pour définir les alias de divers types de données similaires à typedef mais avec les différences suivantes -

  • typedef se limite à donner des noms symboliques aux types uniquement lorsque #define peut également être utilisé pour définir un alias pour les valeurs, q., vous pouvez définir 1 comme ONE etc.

  • typedef l'interprétation est effectuée par le compilateur alors que #define les instructions sont traitées par le pré-processeur.

L'exemple suivant montre comment utiliser #define dans un programme -

#include <stdio.h>
 
#define TRUE  1
#define FALSE 0
 
int main( ) {
   printf( "Value of TRUE : %d\n", TRUE);
   printf( "Value of FALSE : %d\n", FALSE);

   return 0;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Value of TRUE : 1
Value of FALSE : 0