goto-Anweisung (C++)

Die goto Anweisung überträgt die Kontrolle bedingungslos an die durch den angegebenen Bezeichner bezeichnete Anweisung.

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 aussagekräftig. Andernfalls werden Anweisungsbeschriftungen ignoriert. Bezeichnungen können nicht erneut deklariert werden.

Eine goto Anweisung darf keine Steuerung an einen Speicherort übertragen, der die Initialisierung einer Variablen überspringt, die sich in diesem Bereich befindet. Im folgenden Beispiel wird C2362 ausgelö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, wenn möglich die breakAnweisung und continuereturn die Anweisungen anstelle der goto Anweisung zu verwenden. Da die break Anweisung jedoch von nur einer Ebene einer Schleife beendet wird, müssen Sie möglicherweise eine goto Anweisung verwenden, um eine tief geschachtelte Schleife zu beenden.

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

Beispiel

In diesem Beispiel überträgt eine goto Anweisung das Steuerelement an den Punkt, der mit 3 gekennzeichnet ist 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

Siehe auch

Sprunganweisungen
Schlüsselwörter