aostas 2019-09-20 14:09 采纳率: 0%
浏览 241

C语言 联合体里不能用枚举变量吗?

在工程中图方便 定义了枚举变量和联合体来简化位操作
代码如下:

typedef enum{
  MODE0=0x01,
  MODE1=0x02,
  MODE2=0x04,
  MODE3=0x08,
  MODE4=0x10,
}MODEx_e;

typedef union{
  MODEx_e bytes;
  struct{
    MODEx_e mode0  :1;
    MODEx_e mode1  :1;
    MODEx_e mode2  :1;
    MODEx_e mode3  :1;
    MODEx_e mode4  :1;
    MODEx_e :3;
  }bits;
}MODEx_u;

结果调试器读出来是这样的

图片说明

一开始编译也没报错就以为对的 结果调试的时候结果怎么也不对。
是C语言(C89)不支持,还是编译器或者调试器不支持?

  • 写回答

1条回答 默认 最新

  • 用的微信名称 2019-09-20 16:35
    关注

    联合体内含枚举是支持的,你看下是不是其他地方出问题了,代码如下:
    #include "stdafx.h"

    typedef enum{
    red=0x01,
    blue,
    green
    }MODEx_e;

    typedef union{
    MODEx_e color;
    }MODEx_u;

    int _tmain(int argc, _TCHAR* argv[])
    {
    MODEx_u test;
    MODEx_e test1;

    test.color = blue;
    //test = red;

    return 0;
    

    }

    评论

报告相同问题?