본문 바로가기
개발/C++ (98,03,11,14,17,20,23)

Before Classic C++ : goto

by snowoods 2025. 10. 25.

Before Classic C++

 

goto

 

개요

goto는 프로그램의 실행 흐름을 지정된 레이블(label)로 무조건적으로 이동시키는 제어문입니다.

 

C++ 버전별 주요 키워드 도입 시기

  • C99 이전 (C/C++): goto는 C 언어 초기부터 존재했으며, C++에서도 처음부터 지원되었습니다.

 

내용 설명

goto를 사용하면 코드의 특정 위치로 점프할 수 있습니다. 주로 다중 중첩 루프를 한 번에 빠져나가거나, 복잡한 에러 처리 로직을 단순화할 때 제한적으로 사용됩니다. 하지만 goto는 코드의 흐름을 예측하기 어렵게 만들어 가독성과 유지보수성을 해칠 수 있으므로 사용을 지양하는 것이 좋습니다.

 

예제 코드

#include <iostream>

int main() {
    std::cout << "--- goto to exit nested loops ---" << std::endl;
    for (int i = 1; i <= 3; ++i) {
        for (int j = 1; j <= 3; ++j) {
            std::cout << "i = " << i << ", j = " << j << std::endl;
            if (i == 2 && j == 2) {
                goto end_loops;
            }
        }
    }

end_loops:
    std::cout << "\nLoops terminated by goto." << std::endl;

    return 0;
}

 

실행 결과

--- goto to exit nested loops ---
i = 1, j = 1
i = 1, j = 2
i = 1, j = 3
i = 2, j = 1
i = 2, j = 2

Loops terminated by goto.

 

활용팁

  • goto는 코드의 구조를 복잡하게 만들 수 있어 "spaghetti code"를 유발할 수 있습니다. 대부분의 경우 break, continue, return이나 함수 추출, 예외 처리 등으로 대체할 수 있습니다.
  • goto를 사용해야만 하는 드문 상황(예: 깊은 중첩 루프 탈출)이 아니라면 사용하지 않는 것이 현대 프로그래밍의 모범 사례입니다.