Maison >développement back-end >C++ >Les structures anonymes sont-elles standard en C ?
Les « structures anonymes » sont-elles standard en C ?
MSDN affirme que les structures anonymes ne sont pas standard en C, mais un examen plus approfondi révèle un scénario différent. Bien que la norme C définisse les « structures sans nom », elle n'aborde pas spécifiquement le concept de « structures anonymes ».
Définition des structures sans nom
La norme C permet de déclaration de structures sans nom, également appelées structures anonymes. Ces structures n'ont pas de nom et sont généralement utilisées comme types imbriqués dans d'autres structures. L'extrait de code suivant montre une structure sans nom :
struct Foo { struct { int hi; int bye; }; };
Ce code définit une structure sans nom dans la structure Foo. La structure sans nom se compose de deux membres : salut et au revoir.
Accès aux membres de structures anonymes
La norme C permet l'accès aux membres de structures sans nom à l'aide de l'opérateur point. . Par exemple, dans l'exemple précédent, le membre hi est accessible comme suit :
Foo f; f.hi = 3;
Structs anonymes versus "Structs sans nom en tant que membres"
While C 03 et C 11 ne mentionnent pas explicitement les « structures anonymes », le phénomène d'accès aux membres de structures sans nom comme s'ils étaient membres. de la structure mère n’est pas spécifiquement abordée. Ce comportement, connu sous le nom de « structures anonymes en tant que membres », n'est pas couvert par la norme pour les structures sans nom.
La confusion de MSDN
MSDN semble confondre par erreur les structures sans nom avec structures anonymes en tant que membres. Alors que les structures sans nom sont standard, les structures anonymes en tant que membres sont une fonctionnalité non standard prise en charge par certains compilateurs tels que GCC et Visual C.
Conclusion
En résumé, alors que les structures anonymes car les membres ne sont pas standard en C , les structures sans nom sont entièrement prises en charge par la norme. Les termes « structure sans nom » et « structure anonyme » font référence à des concepts différents, ce dernier faisant référence au comportement non standard consistant à accéder aux membres d'une structure sans nom comme s'ils étaient membres de la structure parent.
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!