Est la sizeof(enum) == sizeof(int), toujours ?
- Ou est-il dépendant du compilateur?
- Est-il faux de dire, comme compilateur sont optimisés pour des longueurs de mots (alignement de la mémoire) ie o int est le mot-taille sur un compilateur? Signifie, qu'il n'existe pas de traitement de pénalité si je utiliser les énumérations, comme ce serait le mot aligné?
- N'est-il pas mieux si j'ai mis tous les codes de retour dans un enum, comme je l'ai clairement ne vous inquiétez pas sur les valeurs à obtenir, seuls les noms tout en vérifiant les types de retour. Si c'est le cas habitude #DEFINE être mieux que cela permettrait d'économiser de la mémoire.
Quelle est la pratique habituelle? Si j'ai le transport de ces types de retour sur un réseau et le traitement doit être fait à l'autre extrémité, que préférez-vous les énumérations/#définit/ const ints.
EDIT - il suffit de vérifier sur le net, comme le compilateur ne pas symboliquement lien macros, comment les gens debug puis, comparer la valeur de l'entier avec le fichier d'en-tête?
À partir des Réponses données -je suis en ajoutant cette ligne ci-dessous, que j'ai besoin de plus de précisions-
"Donc, c'est la mise en œuvre définis, et sizeof(enum) peut être égal à sizeof(char), c'est à dire 1."
- N'est-il pas dire que le compilateur vérifie la plage de valeurs dans les énumérations, puis affecter la mémoire. Je ne le pense pas, bien sûr, je ne sais pas. Quelqu'un peut-il svp m'expliquer ce qui est "peut-être".