IPv6地址获取功能?

时间:2014-02-26 06:01:21

标签: c

unsigned char networkMask [sizeof (struct in6_addr)] = { [0 ... (sizeof (struct in6_addr) - 1)] = 0xff };

这里代表(0...(sizeof))的内容。如何分配这个数组。

1 个答案:

答案 0 :(得分:3)

此特定语法是designated initializer的GCC扩展名。有了它,你可以像这样初始化一个数组:

unsigned char foo[<n>] = { [0 ... <n> - 1] = <k> };

其中<n>是成员数,<k>是任何给定的成员价值。

在您展示的代码中,它为networkMask数组初始化0xff数组,其中包含从0sizeof(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}}