关于union赋值的一个问题,求助,谢谢!
int is_full;
void opt_show(..............);
typedef struct {
const char *name;
union {
void (*func_arg)(const char *);
int *int_arg;
char **str_arg;
float *float_arg;
int (*func2_arg)(const char *, const char *);
int64_t *int64_arg;
} u;
} type_new;
const type_new opt[] = {
{ "h", {(void*)opt_h} },
{ "f", {(void*)&is_full} },
{ NULL, },
};
求助2个问题:
1.函数opt_show定义返回值为void,那么(void*)opt_show} 怎么理解?(void*)应该是指针强制类型转换吧?
2.union的赋值问题。{ "h", {(void*)opt_show} }这个应该是对结构体数组opt的一个成员的赋值,相应的,{(void*)opt_show}应该是对结构体中的union成员赋值,这个不懂,找不到相关说明
找到的说明都说union的赋值只能通过引用其中的成员单个赋值。
感谢赐教!!