在开关盒中铸造成更大的类型

m47*_*47h 3 c embedded

在工作期间,我看到了以下代码片段,现在我想知道,如果有理由将"case-values"转换为更大的数据类型.我猜,它用于提供以后有超过256个不同状态的可能性,但是,状态变量也必须更大.这是我正在谈论的代码:

#define STATE_1 (uint8_t)(0x00)
#define STATE_2 (uint8_t)(0x01)
...
#define STATE_n (uint8_t)(0x..)

void HandleState(uint8_t state)
{
  switch(state)
  { 
    case (uint16_t)STATE_1:
      // handle state 1
      break;

    case (uint16_t)STATE_2:
      // handle state 2
      break;

    ...
    case (uint16_t)STATE_n:
      // handle state n
      break;

    default:
      break;
  }

}
Run Code Online (Sandbox Code Playgroud)

还有其他原因吗?

Lig*_*ica 6

还有其他原因吗?

没有.

这可能是一个错误,muppetry或遗留(可能state和宏曾经是其他东西,但这个特殊的代码永远不会改变?).

我个人投票支持muppetry.有时你会遇到其他人写的代码不好的代码,这就是它的方式.