可变长度数组声明

可变长度数组声明在 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;