C 言語には、可変長配列宣言の明示的な構文がありません。XDR 言語には、山括弧を使用する構文があります。
variable-array-declaration: type-ident variable-ident <value> type-ident variable-ident < >
最大のサイズは山括弧の間に指定されます。サイズを省略すると、配列が任意のサイズを持つということが示されます。
int heights<12>; /* 最大で 12 項目 */ int widths<>; /* 任意の数の項目 */
C では可変長配列の明示的な構文がないため、これらの宣言は struct
宣言にコンパイルされます。たとえば、heights 宣言は次の struct
宣言にコンパイルされます。
struct { u_int heights_len; /* 配列の項目の数 */ int *heights_val; /* 配列へのポインタ */ } heights;
配列の項目の数は _len 構成要素に格納され、配列へのポインタは _val 構成要素に格納されます。各構成要素名の最初の部分は、宣言された XDR 変数 (heights) の名称と同様です。