可变长度数组声明
可变长度数组声明在 C 中没有显式语法,因此 XDR 使用尖括号来发明自己的语法。
最大大小在尖括号之间指定。 可以省略特定大小以指示数组可能具有任何大小。
variable-array-declaration:
type-ident variable-ident "<" value ">"
type-ident variable-ident "<" ">"
一组变长数组声明的示例如下:
int heights<12>; /* at most 12 items */
int widths<>; /* any number of items */
注: 最大大小在尖括号之间指定。 可以省略数字,但不能省略尖括号,以指示数组可以具有任何大小。
因为可变长度数组在 C 中没有显式语法,所以这些声明实际上编译为结构定义,由struct. 例如,heights声明编译为以下结构:
struct {
u_int heights_len; /* # of items in array */
int *heights_val; /* # pointer to array */
} heights;