goto-Anweisung (C++)

Die goto Anweisung überträgt bedingungslos die Steuerung an die Anweisung, die durch den angegebenen Bezeichner bezeichnet wird.

Syntax

goto identifier;

Hinweise

Die bezeichnete Anweisung, die durch identifier angegeben wird, muss sich in der aktuellen Funktion befinden. Alle identifier-Namen sind Member eines internen Namespace und beeinträchtigen daher andere Bezeichner nicht.

Eine Anweisungsbezeichnung ist nur für eine goto Anweisung sinnvoll. Andernfalls werden Anweisungsbezeichnungen ignoriert. Bezeichnungen können nicht erneut deklariert werden.

Eine goto -Anweisung darf die Steuerung nicht an einen Speicherort übertragen, der die Initialisierung einer Variablen überspringt, die sich im Gültigkeitsbereich dieses Speicherorts befindet. Im folgenden Beispiel wird C2362 auslöst:

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

    int error_code = 42;

exit:
    return error_code;
}

Es ist ein guter Programmierstil, die Anweisungen , und nach Möglichkeit anstelle der -Anweisung zu break continue return goto verwenden. Da die Anweisung jedoch break nur von einer Ebene einer Schleife beendet wird, müssen Sie möglicherweise eine -Anweisung verwenden, um eine tief goto geschachtelte Schleife zu beenden.

Weitere Informationen zu Bezeichnungen und der goto -Anweisung finden Sie unter Bezeichnete Anweisungen.

Beispiel

In diesem Beispiel überträgt eine -Anweisung die Steuerung an den Punkt mit goto der Bezeichnung , wenn gleich stop i 3 ist.

// 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

Siehe auch

Sprunganweisungen
Schlüsselwörter