goto, instruction (C++)

L’instruction goto transfère inconditionnellement le contrôle à l’instruction étiquetée par l’identificateur spécifié.

Syntaxe

goto identifier;

Notes

L'instruction étiquetée indiquée par identifier doit se trouver dans la fonction actuelle. Tous les noms identifier sont membres d'un espace de noms interne et, par conséquent, n'interfèrent pas avec d'autres identificateurs.

Une étiquette d’instruction est significative uniquement pour une goto instruction ; sinon, les étiquettes d’instruction sont ignorées. Les étiquettes ne peuvent pas être redéclarées.

Une goto instruction n’est pas autorisée à transférer le contrôle vers un emplacement qui ignore l’initialisation d’une variable qui se trouve dans l’étendue de cet emplacement. L’exemple suivant déclenche l’erreur C2362 :

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

    int error_code = 42;

exit:
    return error_code;
}

Il est bon style de programmation d’utiliser l’instruction break, continueet les return instructions au lieu de l’instruction dans la goto mesure du possible. Toutefois, étant donné que l’instruction break sort d’un seul niveau d’une boucle, vous devrez peut-être utiliser une goto instruction pour quitter une boucle profondément imbriquée.

Pour plus d’informations sur les étiquettes et l’instruction goto , consultez Instructions étiquetées.

Exemple

Dans cet exemple, une goto instruction transfère le contrôle au point étiqueté stop lorsqu’il i est égal à 3.

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

Voir aussi

Instructions de saut
Mots clés