调用枚举的作为函数参数时,参数从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);
#define oj8k ((uint16)0x0061U) EM_CTRL(oj8k);
收起
当前问题酬金
¥ 5 (您已提供 ¥ 20, 还可追加 ¥ 495)
支付方式
扫码支付
支付金额 15 元
提供问题酬金的用户不参与问题酬金结算和分配
支付即为同意 《付费问题酬金结算规则》
现象可以这么理解,你看到的值,无论是97还是((uint16_t)0x0061U),不可否认它们表达的意思是相同的。为什么你会看到不同呢?【第二张图】是define的,define的值在编译器第一个阶段会被直接做替代处理,也就相当于第二张图的语句被编译时是:EM_CTRL((uin16_t)0x0061 U),而你鼠标指上去时指的是oj8k,所以会显示给你实际define的内容。【第一张图】是直接定义了枚举体变量的,所有变量无论你定义时写的是什么类型,鼠标指上去查看时都会给你显示十进制,不会以你的写法而变化的,所以你看到了十进制的枚举体成员内容。
报告相同问题?
程序员都在用的中文IT技术交流社区
专业的中文 IT 技术社区,与千万技术人共成长
关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!