0
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
结构,我注意到,我只能参考S_addr通过srcip.S_addr
和srcip.S_un.S_addr
不起作用。我对此做了一个测试。引用变量的联合
struct test_struct {
union {
int m;
int n;
}test;
};
test_struct x;
x.test.m = 1;
编译successfuly,但是当我改变x.test.m = 1
到x.m = 1
,编译失败。为什么这两个相似的条件不相容?
srcip.S_addr
成功,srcip.S_un.S_addr
失败
x.test.m
成功,但失败了x.m
,完全不一样!
使用VS2008和Win7
+1:发现了! – 2012-03-03 03:49:42