ONC+ 開発ガイド

可変長配列宣言

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) の名称と同様です。