匿名の構造体/共用体を使用した C コードのコンパイル
匿名の構造体または共用体を使用して C コードをコンパイルする方法について疑問が生じます。 C では共用体を使用した匿名フィールドを使用します。 C では、匿名共用体を含む名前付き構造体を使用して同様の構造体を作成しようとすると、コンパイル エラーが発生します。
エラー メッセージは、匿名共用体フィールドと構造体フィールドが構造体宣言内で宣言されていないことを示します。 C でこの機能を有効にするには、-fms-extensions コンパイラ フラグを使用する必要があります。
-fms-extensions
#include
#include
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;
}
この変更により、コードは正常にコンパイルされ、アサーションが通過し、共用体メンバーと構造体フィールドのアドレスが等しいことが確認されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3