typedef enum{top_tm,top_al,top_tr,top_ch} TOP_MODE;
sec_00=0x00,sec_01,sec_02,sec_03,
sec_10=0x10,sec_11,sec_12,
sec_20=0x20,sec_21,sec_22,sec_23,sec_24,sec_25,sec_26,sec_27,sec_28,sec_29,
sec_30=0x30
//sec_30表示top_mode 本身
SYSTEM_STATE _system_state = {top_tm,sec_30};
if (_system_state._sec_mode == sec_30)
//判断当前模式 if (++_system_state._top_mode == 4)
_system_state._top_mode = 0;
}
想要函数实现的功能是:每调用一次函数,系统切换到下一个状态,在四个状态之间循环切换。
Change_State()函数在OKI编译器中可以正常实现该功能,但是放到VS2008 C++环境中,有两个报错:
error C2675: 一元“++”:“TOP_MODE”不定义该运算符或到预定义运算符可接收类型的转换error C2440: “=”: 无法从“int”转换为“TOP_MODE”
转换为枚举类型要求显式转换(static_cast、C 样式转换或函数样式转换)而同样的代码在IAR EW430 IDE中的报错为: Warning[Pe188]: enumerated type mixed with another type
对于以上的两个错误时没有疑问的,这是标准C规定的。 ----------------------------------------------------------- |