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

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

Patricia Arquette
リリース: 2024-10-31 21:20:29
オリジナル
878 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート