gpt4 book ai didi

c - 结构中的枚举; c的新手

转载 作者:太空狗 更新时间:2023-10-29 16:04:04 25 4
gpt4 key购买 nike

我想知道在 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_1VALUE_2VALUE_3 是不正确的,因为它们不是常量,而是 union 的成员。

TYPE_1TYPE_2TYPE_3 将是全局可访问的,无论相应的 enum 位于结构。

关于c - 结构中的枚举; c的新手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5902744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com