Les "Structures Anonymes" sont-elles standards en C ? Une analyse détaillée
Introduction
Le concept de « structures anonymes » en C a soulevé des questions sur leur standardisation et leur nature précise. Cet article vise à clarifier ces questions en examinant la documentation pertinente et en explorant les distinctions subtiles entre les différents types de structures anonymes.
Les structures anonymes sont-elles non standards ?
Selon Dans la documentation MSDN de Microsoft, les structures anonymes (structures définies sans nom) sont considérées comme non standard en C . Cependant, les normes ISO C n'abordent pas explicitement cet aspect.
Comprendre les structures anonymes
Structs sans nom :
La norme C permet pour la déclaration de structures sans nom (structs sans nom), qui peuvent être instanciées et utilisées comme noms réguliers structs.
Structs anonymes :
Les structures anonymes font référence à une fonctionnalité spécifique de certains compilateurs C (par exemple, GCC et Visual C ) qui permet d'accéder aux membres d'une structure sans nom directement depuis l'objet contenant.
Le Distinction
La distinction clé réside dans l'accessibilité des membres. Dans le cas de structures sans nom, les membres sont accessibles via l'opérateur point standard (par exemple, foo.bar), tandis que les structures anonymes permettent d'accéder directement aux membres sans spécifier le nom de la structure (par exemple, foo.hi).
Standard vs. Non-Standard
Le standard définit la fonctionnalité des structures sans nom, mais pas spécifiquement le comportement « anonyme » consistant à accéder directement aux membres. Par conséquent, cette dernière est considérée comme une fonctionnalité non standard prise en charge par certains compilateurs.
Exemple d'utilisation
Struct standard sans nom :
struct Foo { struct { int hi; int bye; } bar; };
Anonyme non standard Struct :
struct Foo { struct { int hi; int bye; }; // <--- no member name! };
Dans le deuxième exemple, les membres sont accessibles directement :
f.hi = 3; // Non-standard, compiler-dependent feature
Conclusion
Structures anonymes, telles que définies par leur capacité à accéder directement aux membres à partir de l'objet conteneur, sont une fonctionnalité non standard prise en charge par certains compilateurs C. La norme C fournit la fonctionnalité des structures sans nom, mais l'accessibilité directe des membres n'est pas spécifiée et sa prise en charge n'est pas garantie.
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!