2014-12-01 24 views
2

成員,我有以下結構:結構與工會:結構沒有名爲

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

你需要給工會的標識符,因此它可以被稱爲。 – user3629249 2014-12-01 22:39:02

+0

這是一個在家庭作業中給我們的結構,所以我不能給這個聯盟起個名字。還有其他解決方案嗎? – 2014-12-01 22:54:40

回答

3

這是因爲您正在使用的gcc編譯器的版本不支持未命名的聯合。看到這個計算器link

2

你的工會應該有一個名稱,如

struct sched_param { 
    union { 
     int sched_priority; 
     struct lshort_sched_param lshort_params; 
    } union_member_name; 
}; 

,然後你可以使用param1.union_member_name.sched_priority

+0

這是一個給我們做家庭作業的結構,所以我不能給這個聯盟命名。還有其他解決方案嗎? – 2014-12-01 22:54:13

+0

@helloV已經給你一個解決方案。 – 2014-12-01 23:25:02