声明联合类型变量

时间:2017-05-17 01:25:46

标签: c unions

我正在探索一些古老的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
}

据我所知,它没有任何区别,但你永远不知道......有没有?

1 个答案:

答案 0 :(得分:1)

除非您使用typedef,否则必须在香蕉面前使用union

typedef union {
    uint32_t cool[2];
    uint64_t supercool;
} banana;

然后你可以使用banana。如果你只是按照上面的例子进行操作,那么你必须使用union banana,你甚至可以使用banana来做其他事情。 union bananabanana在上面的示例中有所不同。

如果您在示例中尝试banana other_banana,编译器应该为您提供error: unknown type name ‘banana’