unsigned char networkMask [sizeof (struct in6_addr)]
= { [0 ... (sizeof (struct in6_addr) - 1)] = 0xff };
这里代表(0...(sizeof))
的内容。如何分配这个数组。
答案 0 :(得分:3)
此特定语法是designated initializer的GCC扩展名。有了它,你可以像这样初始化一个数组:
unsigned char foo[<n>] = { [0 ... <n> - 1] = <k> };
其中<n>
是成员数,<k>
是任何给定的成员价值。
在您展示的代码中,它为networkMask
数组初始化0xff
数组,其中包含从0
到sizeof(struct in6_addr) - 1
的元素1
。换句话说,它初始化一个大小为struct in6_addr
的数组,并将所有位设置为unsigned char networkMask[sizeof(struct in6_addr)] = { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 };
。
考虑到IPv6地址占用16个字节,它等同于此:
{{1}}