Maison >développement back-end >C++ >Les structures anonymes sont-elles standard en C ?

Les structures anonymes sont-elles standard en C ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-03 08:02:10165parcourir

Are Anonymous Structs Standard in 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!

Déclaration:
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