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


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

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

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