Typedef C
Le langage C fournit le mot-clé typedef, que vous pouvez utiliser pour donner un nouveau nom à un type. L'exemple suivant définit un terme BYTE pour un nombre à un octet :
typedef unsigned char BYTE;
Après cette définition de type, l'identifiant BYTE peut être utilisé comme abréviation du type unsigned char, Par exemple :
BYTE b1, b2;
Par convention, les définitions sont en majuscules pour rappeler aux utilisateurs que le nom du type est une abréviation symbolique, mais vous pouvez également utiliser des lettres minuscules, comme ceci :
typedef unsigned char byte;
Vous peut également utiliser typedef pour donner un nouveau nom à un type de données défini par l'utilisateur. Par exemple, vous pouvez utiliser typedef sur une structure pour définir un nouveau type de données, puis utiliser ce nouveau type de données pour définir directement les variables de la 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é, cela produira les résultats suivants :
Book title : C ProgrammingBook author : Nuha AliBook subject : C Programming TutorialBook book_id : 6495407
typedef vs #define
#define est une directive C utilisée pour définir des alias pour différents types de données, contrairement à typedef sont similaires, mais ils présentent les différences suivantes :
typedef se limite à définir des noms symboliques pour les types, #define peut non seulement définir des noms symboliques pour les types, mais des alias de définition de type peuvent également être définis pour des valeurs numériques. Par exemple, vous pouvez définir 1 comme UN.
typedef est interprété par le compilateur et l'instruction #define est traitée par le précompilateur.
Voici l'utilisation la plus simple de #define :
#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 les résultats suivants :
Value of TRUE : 1Value of FALSE : 0