闻方 2022-06-13 02:26 采纳率: 60%
浏览 40
已结题

调用枚举的作为函数参数时,参数从16进制变成了10进制。

调用枚举的作为函数参数时,参数从16进制变成了10进制。用define定义就不会这样,请问是为什么怎么解决。
typedef enum
{
EM_M_X_ON=(0x0061U),
EM_M_Y_ON=0x0883u,
EM_M_COM_ON=0x2083u,
EM_ALL_OFF=0x0083u,
}ctrldata;

EM_CTRL(EM_M_X_ON);

img

#define oj8k ((uint16)0x0061U)
EM_CTRL(oj8k);

img

  • 写回答

2条回答 默认 最新

  • Kx_Kevin 2022-06-13 03:21
    关注
    获得2.50元问题酬金

    现象可以这么理解,你看到的值,无论是97还是((uint16_t)0x0061U),不可否认它们表达的意思是相同的。
    为什么你会看到不同呢?
    【第二张图】是define的,define的值在编译器第一个阶段会被直接做替代处理,也就相当于第二张图的语句被编译时是:EM_CTRL((uin16_t)0x0061 U),而你鼠标指上去时指的是oj8k,所以会显示给你实际define的内容。
    【第一张图】是直接定义了枚举体变量的,所有变量无论你定义时写的是什么类型,鼠标指上去查看时都会给你显示十进制,不会以你的写法而变化的,所以你看到了十进制的枚举体成员内容。

    评论 编辑记录
  • CSDN-Ada助手 CSDN-AI 官方账号 2022-06-13 22:00
    关注
    你可以参考下这篇文章:字符串和16进制之间的转换
    评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 6月20日
  • 创建了问题 6月13日

悬赏问题

  • ¥15 51单片机最小开发板系统,想让寻迹小车在全检测到黑线(寻迹模块代码在第一块板子上)时蜂鸣器响(在第二块板子上)
  • ¥15 pbootcms多选调用成列表
  • ¥15 51单片机oled显示时钟
  • ¥15 小规模TSP问题的动态规划求解
  • ¥25 kubelet.service: Failed with result 'exit-code'.
  • ¥15 bitvise黑框内一键部署v2ray提示账户没有root怎么解决
  • ¥15 车型识别以及相似度匹配中细节特征提取以及图像模糊问题
  • ¥15 怎么用鸿蒙的ArkTs写出来啊
  • ¥30 websocket服务端多线程通信
  • ¥15 JNA 方法调用.dll异常
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部