728x90
이 오류는 switch
문 내부에 동일한 값을 갖는 case
라벨이 두 번 이상 사용되었을 때 발생합니다. 각 case
라벨은 고유해야 하며, 동일한 정수 값을 중복해서 사용할 수 없습니다.
중복된 case
값을 선언하면 컴파일러는 어떤 case
블록을 실행할지 결정할 수 없어 오류를 발생시킵니다.
● 오류 예제
#include <stdio.h>
int main() {
int num = 1;
switch (num) {
case 1:
printf("One\n");
break;
case 1: // 오류: 중복된 case 값
printf("Also One\n");
break;
}
return 0;
}
컴파일 시 다음과 같은 오류가 출력됩니다.
error: duplicate case value
● 해결 방법
모든 case
값은 고유해야 하며, 중복되지 않도록 주의해야 합니다. 동일한 동작을 하고 싶다면 여러 case
값을 이어서 작성하거나, default
를 사용할 수 있습니다.
#include <stdio.h>
int main() {
int num = 1;
switch (num) {
case 1:
case 2:
printf("Either One or Two\n");
break;
default:
printf("Other\n");
}
return 0;
}
출력 결과:
Either One or Two
● 실전 팁
- 각
case
라벨은 유일한 정수 값이어야 합니다. - 중복된 값이 있는지 컴파일러가 명확히 판단할 수 있어야 하므로, 매크로나 enum 상수를 사용할 경우에도 유의하세요.
- 중복된 동작이 필요할 경우 여러
case
를 이어서 사용할 수 있습니다.
switch 문을 사용할 때는 각 case의 값이 중복되지 않도록 꼼꼼히 확인하고, 논리 흐름상 동일한 동작을 원하는 경우에는 연속된 case를 통해 처리하는 방법을 사용하는 것이 좋습니다.
728x90