Maison > développement back-end > C++ > Les énumérations C peuvent-elles être déclarées en avant, et si oui, comment et quand ?

Les énumérations C peuvent-elles être déclarées en avant, et si oui, comment et quand ?

Susan Sarandon
Libérer: 2024-12-19 17:37:14
original
376 Les gens l'ont consulté

Can C   Enums Be Forward Declared, and If So, How and When?

Déclaration Forward des Enums en C : Explorer les limitations et les alternatives

Déclaration Forward des énumérations, une fonctionnalité qui nous permet de reporter la définition complète d'un type d'énumération jusqu'à plus loin dans le code, est une fonctionnalité souhaitable dans certains scénarios. Cependant, en C , cette fonctionnalité n'était pas prise en charge jusqu'à l'introduction de C 11.

Raison de la restriction :

En C 03 et les versions antérieures, les énumérations étaient implicitement dimensionnés en fonction de leur contenu. Cela signifiait que le compilateur devait connaître l'ensemble complet des valeurs d'énumération afin de déterminer le type de stockage approprié. Puisque la déclaration prospective ne précise que le nom de l'énumération, il n'a pas été possible de déduire la taille de l'énumération, d'où l'interdiction.

C 11 Forward Déclaration :

C 11 a introduit le concept de spécification explicite de la taille d'une énumération à l'aide de l'énumération : ; syntaxe. Cela nous permet de transmettre des énumérations tant que leur taille est spécifiée à l'avance :

enum Enum2 : unsigned int;      // Legal in C++11, size explicity specified
Copier après la connexion

De plus, le mot-clé de classe enum introduit dans C 11 fournit également un moyen de transmettre des énumérations de déclaration, car il attribue une valeur par défaut type de "int" à l'énumération.

enum class Enum3;               // Legal in C++11, default type is "int"
Copier après la connexion

Alternative Approches :

Si la déclaration directe n'est pas possible en raison de problèmes de compatibilité ascendante ou pour d'autres raisons, il existe des approches alternatives pour obtenir une encapsulation similaire :

  • Utilisez une classe au lieu d'un enum.
  • Utilisez un typedef pour créer une constante symbolique pour le type enum.
  • Utilisez des macros pour représenter enum. valeurs.

Conclusion :

La déclaration directe des énumérations est possible dans C 11 et les versions ultérieures en spécifiant explicitement la taille de l'énumération. Dans les versions antérieures de C , des techniques alternatives peuvent être utilisées pour réaliser une encapsulation similaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal