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 :
enum Enum2 : unsigned int; // Legal in C++11, size explicity specified
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"
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 :
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!