Récupérer la taille d’un enum en C

En C il peut être utile de connaître le nombre de valeur déclarées dans un enum (au hasard pour faire une boucle d’init) :

enum MonEnum {
    en_arbre,
    en_fleur,
    en_raisin,
}
#define MONENUM_SIZE 3

for(int i=0; i < MONENUM_SIZE; i++){
    faire_un_truc((enum MonEnum)i);
}Langage du code : PHP (php)

Mais faire un #define avec la taille à mettre à jour à chaque fois qu’on modifie l’enum c’est pénible et on oublie facilement.

Une méthode pour éviter ça est d’ajouter une valeurs dans l’enum à la fin de la liste. Puis de la caster en Int pour récupérer la taille :

enum MonEnum {
    en_arbre = 0,
    en_fleur,
    en_raisin,
    /* tricks pour récupérer la taille */
    taille_de_MonEnum,
}
#define MONENUM_SIZE ((int)taille_de_MonEnum)

for(int i=0; i < MONENUM_SIZE; i++){
    faire_un_truc((enum MonEnum)i);
}Langage du code : PHP (php)

Il est préférable de bien initialiser la première valeur à 0 pour être sûr.

Ce contenu a été publié dans Non classé, avec comme mot(s)-clé(s) , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *