C 我可以用一个并集来表示一个结构和多个压缩成员吗?

C 我可以用一个并集来表示一个结构和多个压缩成员吗?,c,data-structures,struct,unions,C,Data Structures,Struct,Unions,假设我有一个结构,ivec2: typedef结构ivec2{ int x,y; }ivec2; 我想知道我是否能建立一个类似以下的联盟: 并集矩形{ ivec2 size;//8字节;成员:int x,y; int-width,height;//4+4字节 }; 其中,width对应于size.x,height对应于size.y 我已经看到有可能做到这一点: 并集矩形{ ivec2大小;//8字节 int arr[2];//4+4字节 }; 但我可以和其他成员一起做吗 此图显示了我的意思

假设我有一个结构,
ivec2

typedef结构ivec2{
int x,y;
}ivec2;
我想知道我是否能建立一个类似以下的联盟:

并集矩形{
ivec2 size;//8字节;成员:int x,y;
int-width,height;//4+4字节
};
其中,
width
对应于
size.x
height
对应于
size.y

我已经看到有可能做到这一点:

并集矩形{
ivec2大小;//8字节
int arr[2];//4+4字节
};
但我可以和其他成员一起做吗

此图显示了我的意思:


您要做的是在联合体中嵌套一个匿名结构

而不是:

union rectangle {
    ivec2 size;
    int width, height;
};
做:


不,您不能对联合的单个成员执行此操作,因为联合的每个成员都与其他每个成员共享空间。因此,通过使用匿名结构,
宽度
高度
可以作为
矩形
的成员直接访问,对吗?这正是我需要的答案。谢谢你的快速回复!
union rectangle {
    ivec2 size;
    struct {
        int width;
        int height;
    };
};