Share via


goto 문 (C++)

이 문은 goto 지정된 식별자가 레이블이 지정된 문으로 컨트롤을 무조건 전송합니다.

구문

goto identifier;

설명

identifier에 의해 지정된 레이블 문은 현재 함수에 있어야 합니다. 모든 identifier 이름은 내부 네임스페이스의 멤버이므로 다른 식별자를 방해하지 않습니다.

문 레이블은 문에 goto 만 의미가 있으며, 그렇지 않으면 문 레이블이 무시됩니다. 레이블을 다시 선언할 수 없습니다.

goto 문은 해당 위치의 범위에 있는 변수의 초기화를 건너뛰는 위치로 제어를 전송할 수 없습니다. 다음 예제에서는 C2362를 발생합니다.

int goto_fn(bool b)
{
    if (!b)
    {
        goto exit;  // C2362
    }
    else
    { /*...*/ }

    int error_code = 42;

exit:
    return error_code;
}

가능하면 문 대신 goto , continuereturn 문을 사용하는 break것이 좋은 프로그래밍 스타일입니다. 그러나 break 문이 루프의 한 수준에서만 종료되므로 문을 사용하여 goto 깊이 중첩된 루프를 종료해야 할 수 있습니다.

레이블 및 goto 문에 대한 자세한 내용은 레이블이 지정된 문을 참조 하세요.

예시

이 예제에서 문은 goto 3이면 레이블이 지정된 지점으로 stopi 컨트롤을 전송합니다.

// goto_statement.cpp
#include <stdio.h>
int main()
{
    int i, j;

    for ( i = 0; i < 10; i++ )
    {
        printf_s( "Outer loop executing. i = %d\n", i );
        for ( j = 0; j < 2; j++ )
        {
            printf_s( " Inner loop executing. j = %d\n", j );
            if ( i == 3 )
                goto stop;
        }
    }

    // This message does not print:
    printf_s( "Loop exited. i = %d\n", i );

    stop:
    printf_s( "Jumped to stop. i = %d\n", i );
}
Outer loop executing. i = 0
Inner loop executing. j = 0
Inner loop executing. j = 1
Outer loop executing. i = 1
Inner loop executing. j = 0
Inner loop executing. j = 1
Outer loop executing. i = 2
Inner loop executing. j = 0
Inner loop executing. j = 1
Outer loop executing. i = 3
Inner loop executing. j = 0
Jumped to stop. i = 3

참고 항목

점프 문
키워드