ホームページ >バックエンド開発 >C++ >GCC を使用して C で匿名構造体/共用体をコンパイルするにはどうすればよいですか?

GCC を使用して C で匿名構造体/共用体をコンパイルするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-31 21:20:29881ブラウズ

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

匿名の構造体/共用体を使用した C コードのコンパイル

匿名の構造体と共用体により、個別の構造体/共用体を宣言することなく柔軟なデータ構造が可能になりますタイプ。 C では、入れ子になった構造体と共用体を使用して匿名の構造体/共用体を作成できます。ただし、C はこの機能を直接サポートしていません。

GCC を使用して C で同様の機能を実現するには、-fms-extensions フラグを使用できます。このフラグにより​​、匿名構造体/共用体のサポートを含む Microsoft スタイルの拡張機能が有効になります。

たとえば、次のコードを考えてみましょう。

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

-fms- を追加した場合extensions フラグを使用すると、コードは次のコマンドで正常にコンパイルされます:

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

この拡張機能を使用すると、次のコードのように、配列メンバーを通じて匿名構造体のメンバーにアクセスできます:

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

以上がGCC を使用して C で匿名構造体/共用体をコンパイルするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。