使用位表示状态!!
比较一下两种方法,哪个实现代码更高效呢??
enum MotorStatus
{
INVALID,
UNCALIBRATE,
DISABLE,
STANDBY,
MOVE,
STOP,
EMERSTOP,
MAX
};
void MTStateFsm(void)
{
enum MotorStatus motorStatus
if((motorStatus == STANDBY) || (motorStatus == MOVE) ||(motorStatus == STOP))
{
//TODO:some status transition
}
}
enum MotorStatus
{
INVALID,
UNCALIBRATE,
DISABLE,
STANDBY,
MOVE,
STOP,
EMERSTOP,
MAX
};
void MTStateFsm(void)
{
enum MotorStatus motorStatus
if((motorStatus == STANDBY) || (motorStatus == MOVE) ||(motorStatus == STOP))
{
//TODO:some status transition
}
}
enum MotorStatus
{
INVALID =0x00000000,
UNCALIBRATE =0x00000001,
DISABLE =0x00000002,
STANDBY =0x00000004,
MOVE =0x00000008,
STOP =0x000000010,
EMERSTOP =0x000000020,
MAX =0x000000040
};
void MTStateFsm(void)
{
enum MotorStatus motorStatus
if((motorStatus & (STANDBY | MOVE |STOP)
{
//TODO:some status transition
}
}