gpt4 book ai didi

c - 引用 union 中的变量

转载 作者:行者123 更新时间:2023-11-30 15:58:45 25 4
gpt4 key购买 nike

typedef struct in_addr {
union {
struct {
u_char s_b1,s_b2,s_b3,s_b4;
} S_un_b;
struct {
u_short s_w1,s_w2;
} S_un_w;
u_long S_addr;
} S_un;
} IN_ADDR, *PIN_ADDR, FAR *LPIN_ADDR;

in_addr srcip

一个简单的in_addr结构,我注意到我只能通过srcip.S_addrsrcip.S_un.S_addr引用S_addr不起作用。我对此做了一个测试。

struct test_struct {
union {
int m;
int n;
}test;
};
test_struct x;
x.test.m = 1;

编译成功,但是当我将x.test.m = 1更改为x.m = 1时,编译失败。为什么这两个相似的条件彼此不一致?

srcip.S_addr成功,srcip.S_un.S_addr失败

x.test.m成功,但x.m失败,完全不同!

使用VS2008和Win7

最佳答案

要在问题中声明 in_addr 结构,请使用 typedef:

IN_ADDR srcip;

struct in_addr srcip;

那么您应该能够使用srcip.S_un.S_addr

通过执行 in_addr srcip,您可能正在声明命名空间中可用的其他名为 in_addr 的内容。

关于c - 引用 union 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9543166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com