上一个代码:
struct Inet_address{
char v4[4];
};
extern "C" Inet_address Inet_loopback =
{
{127,0,0,1}
};
修改后:
我已将 Inet_address 设为 union 体 这里的Inet地址是一个 union
union Inet_address{
char v4[4];
char v6[16];
};
现在我想对 extern "C"Inet_address Inet_loopback 做同样的操作 说,
extern "C" Inet_address Inet_loopback =
{
if(some condition)
{127,0,0,1} //It should be Inet_address.v4
else
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } //This should be Inet_address.v6
};
请提出一个正确的方法来实现这个,因为我在这里遇到错误。
最佳答案
你不应该为此使用 char 数组 - 将 in_addr
和 in6_addr
合并:
typedef union {
struct in_addr inaddr;
struct in6_addr in6addr;
} in46_addr_t;
设置 ipv4 环回地址:
addr.inaddr.s_addr = INADDR_LOOPBACK;
对于 IPv6:
addr.in6addr = in6addr_loopback; // pre-defined global variable (note: assumes linux socket API)
关于c++ - 初始化 union ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6115094/