Aller au contenu

Chapitre 17 : Énumérations et Unions

Explorez deux types de données spéciaux pour améliorer la clarté de votre code et optimiser l'utilisation de la mémoire.

Concepts abordés

  • Énumérations (enum) : Définir un type qui ne peut prendre que quelques valeurs nommées (ex: jours, couleurs, états). Cela rend le code beaucoup plus lisible que l'utilisation de simples entiers.
  • Unions (union) : Un type spécial où tous les membres partagent la même adresse mémoire. Une union ne stocke qu'une seule valeur à la fois parmi ses différents membres.
  • Unions taguées : Combiner une struct et une union pour créer des variables capables de stocker différents types de données (type "variant").

Explications du code

enums_unions.c

Démontre l'utilisation des enum pour les jours de la semaine et les couleurs. Il présente également une union simple pour manipuler des nombres sous différents formats et une "union taguée" permettant de créer une variable pouvant contenir soit un entier, soit un flottant, soit une chaîne de caractères.

Conseils et astuces

  • Enum vs #define : Préférez les enum aux #define pour des listes de constantes liées. Les enum sont reconnus par le débogueur, ce qui facilite grandement l'analyse du code.
  • Union et Mémoire : Utilisez les union pour économiser de la mémoire lorsque vous savez que plusieurs champs ne seront jamais utilisés simultanément.
  • Sécurité des Unions : Le compilateur ne garde pas trace du membre qui a été écrit en dernier dans une union. C'est à vous de gérer un "tag" (souvent un enum) pour savoir ce que l'union contient réellement à un instant T.