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
, continue
및 return
문을 사용하는 break
것이 좋은 프로그래밍 스타일입니다. 그러나 break
문이 루프의 한 수준에서만 종료되므로 문을 사용하여 goto
깊이 중첩된 루프를 종료해야 할 수 있습니다.
레이블 및 goto
문에 대한 자세한 내용은 레이블이 지정된 문을 참조하세요.
예
이 예제에서 문은 goto
컨트롤을 3과 같을 때 i
레이블이 지정된 stop
지점으로 전송합니다.
// 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