pegasus1978 2022-07-28 10:59 采纳率: 100%
浏览 27
已结题

keil编译enum值有错误,这是编译阶段,enum都是没有值的吗?

我利用enum做编译条件,但keil编译总是会跑向错误的分支,加了测试代码发现,我用enum赋值的条件都是0,这是编译阶段,enum都是没有值的吗?

  #if 1 // 使用这里的enum,enum_EffectParaTable_Ryder_220722会被编译器认为为0
    typedef enum _EFFECT_PARA_TABLE_VERSION
    {
        enum_EffectParaTable_Ryder_220709  = 0,
        enum_EffectParaTable_Ryder_220722,    
        enum_EffectParaTableVersionCount,
    }enum_EffectParaTableVersion;
        
  #else // 如果使用这里的宏定义就没有问题
    #define enum_EffectParaTable_Ryder_220709        (0)
    #define enum_EffectParaTable_Ryder_220722        (1)    
  #endif

  #if(0 == enum_EffectParaTable_Ryder_220709)
    dd // 编译器会跑到这里来,这里是对的
  #else
    zz
  #endif
  #if(1 == enum_EffectParaTable_Ryder_220722)
    dd
  #else
    zz // 编译器会跑到这里来,我就蒙圈了。。。
  #endif


img


如上图,编译器会跑向错误的分支。

哪位了解编译过程的能给个指导,感激不尽。

  • 写回答

1条回答 默认 最新

  • qllaoda 2022-07-28 12:02
    关注

    预编译语句里能参与运算的只能是预编译语句定义的符号,显然你这种情况不是。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月9日
  • 已采纳回答 8月1日
  • 创建了问题 7月28日

悬赏问题

  • ¥15 (标签-STM32|关键词-智能小车)
  • ¥20 关于#stm32#的问题,请各位专家解答!
  • ¥15 (标签-python)
  • ¥15 第一个已完成,求第二个做法
  • ¥20 搭建awx,试了很多版本都有错
  • ¥15 java corba的客户端该如何指定使用本地某个固定IP去连接服务端?
  • ¥15 activiti工作流问题,求解答
  • ¥15 有人写过RPA后台管理系统么?
  • ¥15 Bioage计算生物学年龄
  • ¥20 如何将FPGA Alveo U50恢复原来出厂设置哇?