我想知道在 struct
中使用 enum
的语法(在 C
中)
我见过各种使用 struct
+ union
/enum
组合来创建复杂类型的示例,例如:
struct MyStruct{
enum{
TYPE_1,
TYPE_2,
TYPE_3,
} type;
union{
int value_1;
int value_2;
int value_3;
} value;
};
// ...
struct MyStruct test_struct;
无论如何,在这个例子中,我将如何根据 enum
字段存储/测试当前“类型”?
如果我有一个指向test_struct
的指针,这似乎不起作用;踢回一个未知的成员错误:
struct MyStruct *test_pointer = &test_struct;
test_pointer->value = test_pointer->VALUE_1;
我很好奇,我是否需要将 enum
值作为全局值访问?
test_pointer->value = VALUE_1;
如有任何说明,我们将不胜感激。
最佳答案
这种结构的预期用途是这样的:
switch (test_struct.type) {
case TYPE_1:
printf("%d", test_struct.value.value_1);
break;
case TYPE_2:
printf("%d", test_struct.value.value_2);
break;
case TYPE_3:
printf("%d", test_struct.value.value_3);
break;
}
请注意,大写 VALUE_1
、VALUE_2
和 VALUE_3
是不正确的,因为它们不是常量,而是 union 的成员。
TYPE_1
、TYPE_2
和 TYPE_3
将是全局可访问的,无论相应的 enum
位于结构。
关于c - 结构中的枚举; c的新手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5902744/