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
構造内の変数を参照してください、私は唯一のsrcip.S_addr
によってS_addrを参照してください、とsrcip.S_un.S_addr
doesntの仕事できることに気づきました。私はこれについてのテストをしました。組合
struct test_struct {
union {
int m;
int n;
}test;
};
test_struct x;
x.test.m = 1;
successfulyコンパイルが、私はx.m = 1
にx.test.m = 1
を変更すると、失敗したコンパイルします。なぜそれらの2つの同様の条件はお互いに一致しませんか?
srcip.S_addr
成功、srcip.S_un.S_addr
は
x.test.m
成功を失敗したが、x.m
は完全に異なる、失敗しました!そして、あなたがsrcip.S_un.S_addr
を使用することができるはず
IN_ADDR srcip;
または
struct in_addr srcip;
:どちらか、あなたの質問にin_addr
構造体を宣言typedefのを使用するにはVS2008とwin7の
+1:よく目に付きます! –