函数返回值为enum的问题~ 为什么结果不对?

freshui 2007-01-26 05:17:17
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); } //可能有问题!
...全文
568 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
freshui 2007-01-26
  • 打赏
  • 举报
回复
返回类型是Endian_type, 直接返回有问题

用几个if else即可 不过看起来不舒服
jixingzhong 2007-01-26
  • 打赏
  • 举报
回复
( gdma_ctrl_reg[channel] >> 21) & 0x03

把这个值返回就是了 ~
jixingzhong 2007-01-26
  • 打赏
  • 举报
回复
Endian_type[(( gdma_ctrl_reg[channel] >> 21) & 0x03)]

这样可以么?
jixingzhong 2007-01-26
  • 打赏
  • 举报
回复
直接返回 int 值 ~~
freshui 2007-01-26
  • 打赏
  • 举报
回复
返回int等同返回enum吗?

我想返回enum, 但是程序最简单的是返回int
taodm 2007-01-26
  • 打赏
  • 举报
回复
和enum没有关系。返回enum等同于返回int。

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧