Designated initializers
U-Boot のコードを読んでいたら、なんだかつっかえて読みづらい構文がありました。こんなの。
struct S s1 = { .a = "abcd", .b = 123 };
意味はなんとなく分かるんだけど、C 言語にそんな構文あったっけか? と、K&R と ANSI C89 で育ったオジさんは、頭をかしげました。
どーせ GNU の独自構文だろうとか思いながら H&S をひもといたら、ちゃんと載ってました。(^^;) 自称三文プログラマの私も、お恥ずかしい限りです。
答えを明かすと、これは C99 で導入された designated initializers という構文だそうで、例えばこんなところで解説されています。