我正在阅读一些代码,发现如下内容:
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直接位于外部联合{}内。那么无名嵌入式联盟的目的是什么?
答案 0 :(得分:9)
答案 1 :(得分:7)
我认为预期的用例更多是“ struct ”中的“匿名联合”,而“联盟内部的匿名联盟”与“扁平”联盟相同的行为只是一个一致的妥协。
答案 2 :(得分:0)
允许将同一指针称为a,b或c。也许有一些遗留代码无法就使用什么名称达成一致。