C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了enum in a struct;新手在c大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道在结构中使用枚举的语法(在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将是全局可访问的,无论相应的枚举位于结构中.

大佬总结

以上是大佬教程为你收集整理的enum in a struct;新手在c全部内容,希望文章能够帮你解决enum in a struct;新手在c所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。