在C99之後,新增了一種初始化方法。可以方便的設定structure/arry的初始值。帶來了極大的靈活
在之前的時期,要初始化一個structure,只能用以下的方式。
1 | typedef struct MyData { |
這種方式稱作Aggregate Initialization。
需要按照Type定義的方式來初始化,一旦我們修改MyData資料結構,所有用到MyData的初始化都需修改。
在C99之後,我們可以這樣做
1 | MyData a = { .v = 10, .p = "name"}; |
這樣就可以用任何順序指定初始值了。
另一個常用的應用場合是Array,拿以下這段程式碼當範例。
1 | enum { |
當我們將 FACEBOOK跟YAHOO的順序對換之後,old_style_weburl
的對應關係也要跟著改變。
1 | char *new_style_weburl[] = { |
這樣子不管enum裡的順序怎麼改變,new_style_weburl
對應關係都能維持正確。
有興趣的可以參考Designated Initializers學到更多。