"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Les structures anonymes sont-elles conformes aux normes C ++?

Les structures anonymes sont-elles conformes aux normes C ++?

Publié le 2025-02-26
Parcourir:634

Are Anonymous Structures in C   Standard Compliant?

sont des "structures anonymes" standard en c? Une analyse détaillée

introduction

Le concept de "structures anonymes" en C a soulevé des questions sur leur normalisation 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.

sont des structures anonymes non standard?

Selon le 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'adressent pas explicitement cet aspect.

Comprendre les structures anonymes

Structs in-noms:
La norme C permet la norme C permet pour la déclaration de structures sans nom (structures sans nom), qui peuvent être instanciées et utilisées comme nommé régulièrement Structs.

Structs anonymes:
Les structures anonymes se réfèrent à une fonctionnalité spécifique de certains compilateurs C (par exemple, gcc et visuel c) qui permet d'accéder aux membres d'une structure sans nom directement à partir de depuis ce l'objet contenant.

la 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 de points standard (par exemple, foo.bar), tandis que les structures anonymes permettent d'accéder directement aux membres sans spécifier le nom de structure (par exemple, foo.hi).

standard vs non standard

La norme définit la fonctionnalité des structures sans nom, mais pas spécifiquement le Comportement "anonyme" d'accès directement aux membres. Par conséquent, ce dernier est considéré comme une fonctionnalité non standard prise en charge par certains compilateurs.

Exemple USAGE

Struct non nommé standard:

struct Foo {
   struct {
      int hi;
      int bye;
   } bar;
};

structure anonyme non standard:

struct Foo {
   struct {
      int hi;
      int bye;
   }; //  

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

f.hi = 3; // Non-standard, compiler-dependent feature

Conclusion

Les structures anonymes, telles que définies par leur capacité à accéder directement aux membres à partir de l'objet contenant, sont un non-non Caractéristique 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 n'est pas garantie d'être prise en charge.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3