我利用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
如上图,编译器会跑向错误的分支。
哪位了解编译过程的能给个指导,感激不尽。