如何初始化struct in6_addr?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何初始化struct in6_addr?相关的知识,希望对你有一定的参考价值。
我知道有一种方法可以做到这一点,
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 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);
以上是关于如何初始化struct in6_addr?的主要内容,如果未能解决你的问题,请参考以下文章
如何在使用cardview的片段中初始化gridlayoutmanager?
如何通过 viewModels 获取 viewModel? (片段-ktx)