Maison >développement back-end >C++ >Comment puis-je compiler des structures/unions anonymes en C avec GCC ?

Comment puis-je compiler des structures/unions anonymes en C avec GCC ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-31 21:20:29878parcourir

How Can I Compile Anonymous Structs/Unions in C with GCC?

Compilation de code C avec des structures/unions anonymes

Les structures et unions anonymes permettent des structures de données flexibles sans avoir à déclarer une structure/union distincte taper. En C , des structures/unions anonymes peuvent être créées à l'aide de structures et d'unions imbriquées ; cependant, C ne fournit pas de prise en charge directe pour cette fonctionnalité.

Pour obtenir une fonctionnalité similaire en C avec GCC, vous pouvez utiliser l'indicateur -fms-extensions. Cet indicateur active les extensions de style Microsoft, y compris la prise en charge des structures/unions anonymes.

Par exemple, considérons le code suivant :

<code class="c">typedef struct {
    union {
        struct {
            float x, y, z;
        };
        float xyz[3];
    };
} Vector3;</code>

Avec l'ajout de -fms- extensions flag, le code se compile avec succès avec la commande suivante :

gcc -fms-extensions -c <source_file>.c

Cette extension vous permet d'accéder aux membres anonymes de la structure via les membres du tableau, comme dans le code suivant :

<code class="c">Vector3 v;
assert(&v.xyz[0] == &v.x);
assert(&v.xyz[1] == &v.y);
assert(&v.xyz[2] == &v.z);</code>

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