2
VBA에서는 단순히 variant-Type을 사용하지만이 다소 반복적 인 코드를 줄이면 더 좋은 switch case
블록을 얻을 수 있습니까?다른 유형의 var에 대해 C2371 (재정의) 오류가 발생하지 않고 변수를 다시 사용하는 방법은 무엇입니까?
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 개 응답 변수를 제거하고 단 하나 사용하는 것입니다 - 그러나, 나는 때문에 memcpy
의 5 가지 유형이 필요합니다.
cast
과 같은 것이 있습니다. 그러나이 RESPONSE #은 다른 크기의 구조체이기 때문에 더 문제가 있다고 생각합니다. 메모리를 다시 할당해야합니까?
편집 :
덕분에 이미 내 코드에 그것을 위해 노동 조합이 있음을, 내가 발견, 먹스하는 (다른 사람에서 무언가를 적응)!
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;
...
큰 도움이!
+1, 감사합니다 ! 내 '스위치 케이스'에서 내가 가지고있는 조합 (편집 참조)을 사용하는 방법에 대한 예제로 확장 해 주시겠습니까? 이 일을 직접 해보려고했지만 노조에 대해서는 전혀 모른다. – Jook
@Jook updated .. – iabdalkader