我正在探索一些古老的C库,并且为什么它以某种方式声明了union变量以及它是否有任何区别,我感到有点困惑,例如:
union banana {
uint32_t cool[2];
uint64_t supercool;
};
void main() {
union banana new_banana; //<- why like this?
banana other_banana; // <- as opposed to this
}
据我所知,它没有任何区别,但你永远不知道......有没有?
答案 0 :(得分:1)
除非您使用typedef
,否则必须在香蕉面前使用union
。
typedef union {
uint32_t cool[2];
uint64_t supercool;
} banana;
然后你可以使用banana
。如果你只是按照上面的例子进行操作,那么你必须使用union banana
,你甚至可以使用banana
来做其他事情。 union banana
和banana
在上面的示例中有所不同。
如果您在示例中尝试banana other_banana
,编译器应该为您提供error: unknown type name ‘banana’