我有以下结构:
struct sched_param {
union {
int sched_priority;
struct lshort_sched_param lshort_params;
};
};
struct lshort_sched_param {
int requested_time;
int level;
};
每当我创建sched_param param1
结构并尝试更新param1.sched_priority
字段时,我都会收到主题中写的消息。
struct sched_param param1;
param1.sched_priority = 1;
但是,每当我制作sched_param param2
并尝试更新param2.lshort_params.level
时效果都很好。
struct sched_param param2;
param2.lshort_params.level= 1;
可能是什么原因?
答案 0 :(得分:3)
这是因为您使用的gcc编译器版本不支持未命名的联合。请参阅此stackoverflow link
答案 1 :(得分:3)
你的工会应该有一个名字,例如
struct sched_param {
union {
int sched_priority;
struct lshort_sched_param lshort_params;
} union_member_name;
};
然后您可以使用param1.union_member_name.sched_priority