读书人

函数返回值为enum的有关问题~ 为什么结

发布时间: 2012-02-28 13:06:36 作者: rapoo

函数返回值为enum的问题~ 为什么结果不对?
enum Endian_type { NO_ENDIAN=0, RESERVED, ENDIAN_SRC, ENDIAN_DST };

Endian_type get_Endian(UINT32 channel){ return Endian_type[(( gdma_ctrl_reg[channel] > > 21) & 0x03)];}//可能有问题!

调用get_Endian(i)不是想要的值 肯定这样有问题

下面这个一样不行
Endian_type get_Endian(UINT32 channel){ return static_cast <Endian_type> (( gdma_ctrl_reg[channel] > > 21) & 0x03);}//可能有问题!


[解决办法]
和enum没有关系。返回enum等同于返回int。
[解决办法]
直接返回 int 值 ~~
[解决办法]
Endian_type[(( gdma_ctrl_reg[channel] > > 21) & 0x03)]

这样可以么?
[解决办法]
( gdma_ctrl_reg[channel] > > 21) & 0x03

把这个值返回就是了 ~

读书人网 >C++

热点推荐