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 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘