프로그래밍언어/C언어[Error]
[C언어][Error] 021. a label can only be part of a statement and a declaration is not a statement – 선언문에서 레이블 사용 불가
about_IT
2025. 4. 24. 19:30
728x90
이 오류는 C언어에서 레이블(label)을 잘못된 위치, 특히 선언문 앞에 사용했을 때 발생합니다. C언어에서 레이블은 반드시 실행 가능한 문(statement)에만 붙일 수 있으며, 변수 선언과 같은 선언문(declaration)에는 사용할 수 없습니다.
레이블은 보통 goto 문과 함께 사용되며, 프로그램의 흐름을 특정 위치로 점프하게 할 때 사용됩니다. 이때 레이블이 선언문에 붙어 있으면 컴파일러가 실행 흐름을 명확히 해석할 수 없기 때문에 오류를 발생시킵니다.
● 오류 예제
#include <stdio.h>
int main() {
goto label;
label: int x = 10; // 오류: 선언문 앞에 레이블 사용
printf("%d\n", x);
return 0;
}
컴파일 시 다음과 같은 오류가 발생합니다.
error: a label can only be part of a statement and a declaration is not a statement
● 해결 방법
레이블은 반드시 실행 가능한 문에만 붙여야 합니다. 선언문은 실행되지 않기 때문에, 변수 선언 이후에 오는 문장에 레이블을 붙이는 방식으로 수정해야 합니다.
#include <stdio.h>
int main() {
int x;
goto label;
x = 10;
label: printf("%d\n", x);
return 0;
}
출력 결과:
10
● 실전 팁
- 레이블은 반드시 실행 가능한 문(statement)에만 붙여야 합니다.
- 변수 선언은 레이블 위치보다 먼저 하거나, 레이블 다음에 실행 문을 넣어야 합니다.
- goto 사용은 제한적이어야 하며, 코드 가독성을 해치지 않도록 주의하세요.
레이블은 흐름 제어를 위한 도구이지만 문법적으로 허용된 위치에서만 사용할 수 있습니다. 특히 선언문과 실행문의 차이를 명확히 이해하는 것이 중요합니다.
728x90