Maison > développement back-end > C++ > Les structures anonymes en C sont-elles conformes à la norme ?

Les structures anonymes en C sont-elles conformes à la norme ?

Linda Hamilton
Libérer: 2024-12-10 00:40:14
original
495 Les gens l'ont consulté

Are Anonymous Structures in C   Standard Compliant?

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;
};
Copier après la connexion

Anonyme non standard Struct :

struct Foo {
   struct {
      int hi;
      int bye;
   }; // <--- no member name!
};
Copier après la connexion

Dans le deuxième exemple, les membres sont accessibles directement :

f.hi = 3; // Non-standard, compiler-dependent feature
Copier après la connexion

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!

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