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++에서는 가독성과 유지보수를 고려하여 다른 제어 구조로 대체하는 것이 일반적입니다.