今天才发现有这种用法参考此处。
比如定义如下结构体:
struct Object {
enum ObjectType type;
union{
int value;
struct{
struct Object *header;
struct Object *tail;
};
};
};
可以这样访问结构成员:
Object obj;
obj.value = ..;
obj.header = ..;
obj.tail = ...;
想请教下,这样定义匿名的字段有什么好处?
struct Object {
enum ObjectType type;
union{
int value;
struct{
struct Object *header;
struct Object *tail;
};
};
};
题主应该是在64位机器下测试的,
enum是用int来表示的,占4字节;
指针都是8字节;
union中的变量共享同一块内存,所以这个联合体的大小应该是结构体的两个指针的大小,8*2 = 16字节。
考虑到内存对齐的因素:
enum之后应该增加4字节补齐到8字节;
因此,加上Object结构体的16字节一共是24字节。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。