goto 문

goto label·RAII 대체 경로

C++의 goto는 같은 함수 안 label로 점프하지만, 초기화된 객체의 범위를 건너뛰는 이동과 제어 경로 추적 비용 때문에 거의 쓰지 않습니다.

label

같은 함수 내 대상

label:은 같은 함수 안에서 유일해야 하며, goto가 해당 위치로 제어 경로를 옮깁니다.

label:
jump

초기화 우회 금지

초기화된 지역 객체의 범위 안으로 뛰어드는 goto는 컴파일 오류가 됩니다.

goto label;
cleanup

C식 cleanup 라벨

레거시 C 코드의 fopen/free cleanup label을 읽을 수는 있지만 C++은 RAII가 우선입니다.

cleanup:
RAII

구조화된 대안

return, break, 함수 분리, std::unique_ptr, 소멸자로 자원 해제 경로를 표현합니다.

std::unique_ptr
일반 로직if, switch, for/while, continue, break, early return으로 분기 의도를 먼저 표현합니다.
컴파일 오류jump bypasses variable initialization 유형이 보이면 블록 진입 경로를 다시 설계합니다.
레거시 해석goto를 만나면 출발점, 도착 label, raw pointer/fopen 해제 누락 여부를 따라갑니다.