ONC+ 開発ガイド

RPCL 可変長配列宣言

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