我创建了一个将十六进制原因转换为另一个十六进制原因的函数。 该功能始终为默认情况。
static uint8_t convert_reason_code(uint32_t reason)
{
printf("reason %u is ==== \n",reason);
switch (reason) {
case 0x02 :
printf("reason A\n");
return 0x01
case 0x88 :
printf("reason B\n");
return 0x02;
case 0x44 :
printf("reason C\n");
return 0x03 ;
default:
printf("default\n"); //always prints default
return 0X00 ;
}
}
如果我明确更改了函数内部的原因代码,那么 开关盒工作正常。
static uint8_t convert_reason_code(uint32_t reason)
{
printf("reason %u is ==== \n",reason);
reason = 0x44
switch (reason) {
case 0x44:
printf("reason C\n"); //will be printed
}
}
是因为原因是32位且案例都是8位吗?我应该如何标记我的案例以便32位理由有效?