加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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将是全局可访问的,无论相应的枚举位于结构中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读