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;
};
};