[英]Accessing a member of a union from a structure
我有一个结构
typedef struct s_var_types_tag
{
uint8_t type;
union {
s_t1_t t1_data;
s_t2_t t2_data;
s_t3_t t3_data;
}
} s_var_types_t;
我有一个函数指针
void (*xkey_to_type[MAX_TYPES])(s_x1_t *x1key, s_var_types_t *val);
我想使用此函数指针并利用数据类型,并调用特定的指针,即
s_var_types_t* obj;
Suppose obj type has been set (obj->type = t1)
xkey_to_type[obj->type](x1key,obj)
在此函数中,我想设置类型的详细信息如果obj类型为t1,则可以访问t1_data,就像其他组件不存在一样。
obj->t1_data.a = xxx;
但这显示了一个错误,说
request for memberin something not a structure or union
有什么事吗
您所使用的称为“匿名联合”。 这是C11中出现的新功能。 如果您不使用它,则必须命名您的工会会员。
union {
s_t1_t t1_data;
s_t2_t t2_data;
s_t3_t t3_data;
} u;
首先,给您的union
一个名字:
union {
s_t1_t t1_data;
s_t2_t t2_data;
s_t3_t t3_data;
} my_union;
然后,您可以访问其字段:
obj->my_union.t1_data.a = xxx;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.