문제

나는 이것을하는 한 가지 방법을 알고있다.

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 } } }; 

그리고 나는 1/2/3 파리의 괄호가 될 수있는 것 같습니다.

감사해요.

도움이 되었습니까?

해결책

주소의 양식을 표시해야하기 때문에 (C99를 사용하여 표시) :

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

첫 번째 브래킷 쌍은 in6_addr struct에 대한 것입니다. 두 번째는 Union의 경우입니다.

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