匿名の構造体/共用体を使用した C コードのコンパイル
次に示すように、匿名の構造体または共用体を使用して C コードをコンパイルする方法について疑問が生じます。 C では共用体を使用した匿名フィールドを使用します。 C では、匿名共用体を含む名前付き構造体を使用して同様の構造体を作成しようとすると、コンパイル エラーが発生します。
エラー メッセージは、匿名共用体フィールドと構造体フィールドが構造体宣言内で宣言されていないことを示します。 C でこの機能を有効にするには、-fms-extensions コンパイラ フラグを使用する必要があります。
-fms-extensions を使用した改訂コード
<code class="c">#include <stdio.h> #include <assert.h> typedef struct { union { float x, y, z; } xyz; } Vector3; int main() { Vector3 v; assert(&v.xyz.x == &v.x); assert(&v.xyz.y == &v.y); assert(&v.xyz.z == &v.z); return 0; }</code>
これにより、変更すると、コードは正常にコンパイルされ、アサーションが通過し、共用体メンバーと構造体フィールドのアドレスが等しいことが確認されます。
以上が匿名構造体または共用体を使用して C コードをコンパイルするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。