본문 바로가기
프로그래밍언어/C언어[Error]

[C언어][Error] 031. duplicate case value – 중복된 case 값 사용

by about_IT 2025. 4. 27.
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