从昨天对某个问题的回答中,我了解到写入一个 union 成员并从另一个不同类型的成员读取值是不可移植且不安全的,假设成员基本对齐。因此,经过一些研究后,我发现了一份书面资料,其中重复了这一说法并指定了一个流行的示例 - 使用 int 和 float 的 union 来查找 float 的二进制表示。
因此,我想知道这个假设是不安全的 - 除了节省内存(duh...) union 还有什么实际用途?
注意:即在标准 C 下。显然,对于特定的实现,规则是预先知道的并且可以利用。
编辑:“不安全”这个词,由于近年来的联想,可能是一个糟糕的措辞选择,但我认为意图很明确。
编辑 2:由于这一点在答案中重复 - saving memory 是一个有效的论点。我想知道是否还有其他东西。
最佳答案
是的。
提供了一种创建通用容器的方法。但是,要获得多态行为,您必须自己实现 vtable 或类型切换...
但是,有其中一个功能,您只在需要时才使用它们,而且很少需要。
关于c - ANSI C union ——它们真的有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3464448/