我有一个工会我正在运行一个程序验证软件,并且想说一下哪个成员是活跃的。所以我试着把它写成标记的联合:
struct my_struct {
enum my_tag {v1, v2};
struct{
enum my_tag tag;
union {
type1 v1;
type2 v2;
}value;
}my_taggedunion;
};
我正在运行程序验证软件。我想添加一个要求,如果my_taggedunion.tag == v1
那么联合中的活动成员应该是v1
。
我试图写一些类似"如果my_taggedunion.tag == v1
然后my_taggedunion.active_member == v1
。结论的正确语法是什么?
答案 0 :(得分:3)
没有"活跃成员的概念"就C而言。请注意,根据ANSI C标准:
如果指向union的指针被强制转换为指向成员的指针类型, 结果是指该成员。
(参见X3.159-1989的3.5.2.1和Kernighan& Ritchie的A8.3)
您必须自己跟踪工会的相关部分,在您的情况下,您需要通过my_tag
进行跟踪。