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