可変長配列宣言は、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) と同じです。