프로그래밍언어/C언어[Error]
[C언어][Error] 075. jump to label crosses initialization – 초기화 전 레이블 점프
about_IT
2025. 5. 2. 20:41
이 오류는 goto
문으로 점프하는 위치가 변수의 초기화 이후로 지정되었을 때 발생합니다. C언어에서는 변수 초기화가 수행되기 전에 해당 지점으로 점프할 경우, 해당 변수는 초기화되지 않은 상태로 접근될 수 있으므로 컴파일러는 이를 문법 오류로 처리합니다.
이는 프로그램의 안전성과 예측 가능한 실행 흐름을 보장하기 위한 규칙으로, 특히 지역 변수의 초기화가 중요한 경우 자주 발생합니다.
● 오류 예제
#include <stdio.h>
int main() {
goto skip;
int x = 10; // 오류: 초기화 전에 jump 발생
skip:
printf("x는 초기화되지 않음\n");
return 0;
}
컴파일 시 다음과 같은 오류 메시지를 출력합니다.
error: jump to label crosses initialization of ‘x’
● 해결 방법
점프 위치 이전에 초기화되는 변수를 블록으로 감싸거나, 변수 선언을 점프 이후로 이동시키는 방식으로 해결할 수 있습니다.
#include <stdio.h>
int main() {
int x;
goto skip;
x = 10;
skip:
x = 20;
printf("%d\n", x);
return 0;
}
출력 결과:
20
● 실전 팁
goto
문을 사용할 경우 변수 초기화 전후 위치를 반드시 검토하세요.- 점프가 변수 초기화를 건너뛰지 않도록 변수 선언과
goto
순서를 조정하세요. - 가급적
goto
대신 반복문이나 조건문을 사용하는 것이 구조적인 코드에 유리합니다.
초기화 전 점프는 프로그램의 예측 불가능한 동작을 유발할 수 있으므로, 반드시 변수 선언과 goto
위치를 신중히 조정하여 안전한 코드 흐름을 유지하세요.