工会内无名的联盟

时间:2014-03-14 13:22:29

标签: c unions

我正在阅读一些代码,发现如下内容:

typedef union {
    int int32;
    int boolean;
    time_t date;
    char *string;
    union {
        struct foo *a;
        struct foo *b;
        struct foo *c;
    };
} type_t;

从语法的角度来看,内部联合{}可以被删除,并且* a,* b和* c直接位于外部联合{}内。那么无名嵌入式联盟的目的是什么?

3 个答案:

答案 0 :(得分:9)

答案 1 :(得分:7)

我认为预期的用例更多是“ struct ”中的“匿名联合”,而“联盟内部的匿名联盟”与“扁平”联盟相同的行为只是一个一致的妥协。

答案 2 :(得分:0)

允许将同一指针称为a,b或c。也许有一些遗留代码无法就使用什么名称达成一致。