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;
    

    }

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题