如何检查union当前使用的是什么类型?

2024-01-12

假设我们有一个工会:

typedef union someunion {
    int a;
    double b;
} myunion;

在我设置后,是否可以检查联合中的类型a=123? 我的方法是将此联合添加到某个结构中,并在其为 int 时将 uniontype 设置为 1,在为 double 时将其设置为 2。

typedef struct somestruct {
    int uniontype
    myunion numbers;
} mystruct;

还有更好的解决办法吗?


还有更好的解决办法吗?

不,您展示的解决方案是最好的(也是唯一的)解决方案。union它们非常简单 - 它们不会“跟踪”您分配给什么的内容。他们所做的只是让您为所有成员重复使用相同的内存范围。除此之外,它们不提供任何其他内容,因此将它们封装在一个struct使用“类型”字段进行跟踪正是正确的做法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查union当前使用的是什么类型? 的相关文章

随机推荐