Как два пальца (не проверял, но что-то в этом роде должно
заработать) :-) #define SWITCH(x) for(uint32_t _switch_ = x, _cond_ = 1; _cond_;)
#define CASE(y) if ( _switch_ == ( ((uint8_t *)(y)[0]) + ((uint8_t *)(y)[1])*0x100u + ((uint8_t *)(y)[2])*0x10000ul + ((uint8_t *)(y)[3])*0x1000000ul ) )
#define DEFAULT _cond_ = 0;
SWITCH(var)
{
CASE("EKLM")
{
....
break;
}
DEFAULT
{
....
break;
}
}