728x90
이 오류는 동일한 이름의 레이블(label)을 하나의 함수 또는 블록 내에서 두 번 이상 정의했을 때 발생합니다. C언어에서 레이블은 고유해야 하며, 같은 이름을 가진 레이블을 중복으로 정의하면 컴파일러는 충돌로 간주하고 오류를 발생시킵니다.
주로 goto
문을 사용할 때 실수로 같은 이름을 반복 선언하는 경우에 나타납니다.
● 오류 예제
#include <stdio.h>
int main() {
goto label;
label:
printf("첫 번째 레이블\n");
label: // 오류: 레이블 중복 정의
printf("두 번째 레이블\n");
return 0;
}
컴파일 시 다음과 같은 오류 메시지가 출력됩니다.
error: duplicate label ‘label’
● 해결 방법
레이블 이름은 동일 함수 내에서 중복될 수 없으므로, 각 레이블마다 고유한 이름을 사용해야 합니다. 아래는 수정된 예시입니다.
#include <stdio.h>
int main() {
goto label1;
label1:
printf("첫 번째 레이블\n");
label2:
printf("두 번째 레이블\n");
return 0;
}
출력 결과:
첫 번째 레이블
두 번째 레이블
● 실전 팁
- 레이블은 함수 내에서 유일해야 합니다.
- 중복된 레이블이 없도록 신중하게 네이밍하세요.
- goto 사용 시 레이블 위치와 이름이 정확한지 항상 확인하세요.
레이블은 흐름 제어에 유용하지만 중복될 경우 컴파일 오류를 유발하므로, 이름 충돌을 피하고 코드의 명확성을 유지하는 것이 중요합니다.
728x90