40. C++ goto

C++ goto

1. 개요

1.1 문서 개요

이 문서는 C++에서 사용되는 goto 키워드에 대해 설명합니다. goto는 프로그램 실행 흐름을 특정 위치로 직접 이동시키는 제어문으로, 라벨(label)과 함께 사용됩니다. 현대 프로그래밍에서는 제한적으로 사용되며, 구조적 프로그래밍과의 충돌 가능성으로 인해 신중한 접근이 필요합니다.

2. 내용

2.1 goto 문법과 사용법

goto 문은 다음과 같은 구조로 사용됩니다.

goto 라벨명;
// ...
라벨명:
    문장;

2.1.1 간단한 예제

#include <iostream>

int main() {
    int x = 1;

    if (x == 1)
        goto target;

    std::cout << "이 줄은 실행되지 않음
";

target:
    std::cout << "goto에 의해 도달한 위치
";

    return 0;
}

이 코드는 조건이 참일 경우 target:으로 직접 이동하여 이후 문장을 실행합니다.

2.2 라벨 규칙

  • 라벨은 식별자 뒤에 콜론(:)을 붙여 정의합니다.
  • 프로그램 내에서 유일해야 하며, 동일한 이름의 라벨 중복은 허용되지 않습니다.
  • 함수 내부에서만 유효하며, 함수 외부로 이동은 불가능합니다.

2.3 goto의 위험성과 주의 사항

goto는 다음과 같은 이유로 사용이 권장되지 않습니다:

  • 코드 흐름이 불명확해짐
  • 유지보수가 어려워짐
  • 중첩 루프와 조건문에서 구조적 혼란을 유발

대신 break, continue, return, 함수 분할 등의 구조적 제어문 사용이 일반적입니다.

2.4 제한적 유용 사례

드물지만 중첩 루프 탈출 시 goto가 유용할 수 있습니다.

for (int i = 0; i < 10; ++i) {
    for (int j = 0; j < 10; ++j) {
        if (i + j > 12)
            goto exit_loop;
    }
}
exit_loop:
std::cout << "루프 종료 후 처리";

3. 마무리

goto는 프로그램 흐름을 직접 조작할 수 있는 강력한 수단이지만, 코드의 복잡성과 오류 가능성을 높일 수 있으므로 제한적으로 사용되어야 합니다. 현대 C++에서는 가독성과 유지보수를 고려하여 다른 제어 구조로 대체하는 것이 일반적입니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

error: Content is protected !!
위로 스크롤