質問

私はこれを行うための一つの方法を知っています、

const struct in6_addr naddr6 = { { 
                0x3f, 0xfe, 0x05, 0x01,
                0x00, 0x08, 0x00, 0x00, 
                0x02, 0x60, 0x97, 0xff,
                0xfe, 0x40, 0xef, 0xab
}};

しかし、これでできませんでした。

const struct in6_addr naddr6 = 
                { { { 0x3ffe0501, 0x00080000, 0x026097ff, 0xfe40efab } } }; 

と、それは私がbrackets.Whyの1/2/3パリのどちらかでしているようです?

感謝ます。

役に立ちましたか?

解決

1つの必要がアドレス指定されたアドレス(C99を使用して示されている)のどちらの形式を指示するため

const struct in6_addr naddr6 = 
    { { .u6_addr32 = { 0x3ffe0501, 0x00080000, 0x026097ff, 0xfe40efab } } };

第1ブラケットペアは、組合のための第二のin6_addr構造体のためのものである:

struct in6_addr
  {
    union
      {
 uint8_t u6_addr8[16];
 uint16_t u6_addr16[8];
 uint32_t u6_addr32[4];
      } in6_u;
  };

他のヒント

これを行うためのポータブルな方法はそうのようなものです。

struct in6_addr s6 = { };
if (!IN6_IS_ADDR_UNSPECIFIED(&s6))
  inet_pton(AF_INET6, "2001:db8::1", &s6);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top