假設struct是定義為
struct sched_param {
/* ... */
int sched_priority;
/* ... */
};
那麼一般來說,初始化的方式是先宣告一個struct sched_param變數,
然後再用dot運算子去存取內部成員並賦予值,如下
struct sched_param sp1;
sp1.sched_param = 1;
那看到一個進階的方式是以集合的概念去處理struct的initialization
struct sched_param sp2 = {
.sched_priority = 1
};
在上述的語法中,(.) dot運算子可以抓到struct內的成員
若是struct內有多個成員的話,只需要用(,) 逗點分開即可
給值順序可以不用按照定義內的先後順序
PS.
這是GNU牛頭牌gcc的延伸C語法,非標準C語法
在它牌 c compiler 上要注意能否使用
[Reference]
http://linuxprograms.wordpress.com/2008/03/07/c-structure-initialization-advanced/
沒有留言:
張貼留言