3

Barnyard2 の sf_ip.hソース コードを見ています。sfip_t stuct、特にユニオンブロックを理解していません。

typedef struct _ip {
    int family;
    int bits;

    /* see sfip_size(): these address bytes
* must be the last field in this struct */
    union
    {
        u_int8_t u6_addr8[16];
        u_int16_t u6_addr16[8];
        u_int32_t u6_addr32[4];
// u_int64_t u6_addr64[2];
    } ip;
    #define ip8 ip.u6_addr8
    #define ip16 ip.u6_addr16
    #define ip32 ip.u6_addr32
// #define ip64 ip.u6_addr64
} sfip_t;

なぜ配列を使用しているのですか?ドキュメントを探してみましたが、Google はうまくいきませんでした。ここで何が行われているのか、誰か説明してもらえますか?

4

1 に答える 1