配列メンバの初期化
久々にGCC拡張について書く。
初期化リスト中に、C99の複合リテラルと同じ書式により、配列メンバを初期化することができる。
version 4.1以前のGCCでのみ利用できる。
struct foo { int bar[2]; foo(int x, int y):bar((int[2]){x,y}){} };
この拡張は、cppll:12924で初めて見た。
元記事では『Designated Initializer』となっているが、これは誤りである。
『Designated Initializer』は、要素を指定して初期化する方法。こんなの↓
int foo[] = {[3] = 4, [10] = 1}; // { 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 1 }と同じ