enum in a struct;新手在c
发布时间:2020-12-16 09:34:33 所属栏目:百科 来源:网络整理
导读:我想知道在结构中使用枚举的语法(在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 te
我想知道在结构中使用枚举的语法(在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; 无论如何,从这个例子中,我将如何根据枚举字段存储/测试当前的“类型”? 如果我有一个指向test_struct的指针,这似乎不起作用;踢回未知成员错误: struct MyStruct *test_pointer = &test_struct; test_pointer->value = test_pointer->VALUE_1; 我只是好奇,我需要将枚举值作为全局值来访问吗? 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是不正确的,因为它们不是常量,而是联合的成员. TYPE_1,TYPE_2和TYPE_3将是全局可访问的,无论相应的枚举位于结构中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |