在 VBA 中,我只是为此使用了一个变体类型,但我怎样才能减少这种有些重复的代码以获得更好的switch case
块呢?
switch(command){
case CMD1:
RESPONSE1 rsp1;
memcpy(&rsp1,pPkt,sizeof(rsp1));
break;
case CMD2:
RESPONSE2 rsp2;
memcpy(&rsp2,pPkt,sizeof(rsp2));
break;
case CMD3:
RESPONSE3 rsp3;
memcpy(&rsp3,pPkt,sizeof(rsp3));
break;
case CMD4:
RESPONSE4 rsp4;
memcpy(&rsp4,pPkt,sizeof(rsp4));
case CMD5:
RESPONSE5 rsp5;
memcpy(&rsp5,pPkt,sizeof(rsp5));
default:
break;
}
我的目标是消除这 5 个响应变量并只使用一个 - 但是,我需要 5 种不同的类型,因为memcpy
.
我知道,有类似的东西cast
,但我认为这更有问题,因为这些 RESPONSE# 是不同大小的结构 - 我不需要为此重新分配内存吗?
编辑:
多亏了 mux,我发现我的代码中已经有一个联合(改编别人的东西)!
typedef union
{
RESPONSE1 rsp1;
RESPONSE2 rsp2;
RESPONSE3 rsp3;
RESPONSE4 rsp4;
RESPONSE5 rsp5;
}
RESPONSE_UNION;
这就是我现在使用的:
RESPONSE_UNION ru;
switch(command){
case CMD1:
memcpy(&ru.rsp1,pPkt,sizeof(ru.rsp1));
break;
case CMD2:
memcpy(&ru.rsp2,pPkt,sizeof(ru.rsp2));
break;
...
真的是一个很大的帮助!