Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Instruction goto

Syntaxe d'utilisation

goto etiq;

L'instruction goto permet de réaliser ce qu'on appelle un débranchement. Un débranchement permet de se repositionner sur une autre section de code a exécuter, introduite par une étiquette, au lieu de poursuivre une exécution séquentielle.

Une étiquette se définie avec un nom suivi d'un caractère :. Normalement, une étiquette est placée en colonne 0 du fichier de texte.

En fait quasiment toutes les instructions C++ effectuent de débranchement. Pour les autres instructions, les choses sont contrôlée par le compilateur, mais ce qui n'est pas le cas avec goto. Effectivement, si l'étiquette de destination n'est pas placée dans le même bloc que l'instruction goto, alors vous pouvez désynchroniser la pile d'exécution et donc aboutir à un crash de l'application. C'est pour cette raison qu'il est très fortement conseillé de ne pas utiliser l'instruction goto au profit des autres instructions.

Exemple de code

#include <cstdlib>

#include <iostream>

using namespace std;


int main( int argc, char * argv[] ) {

    argc--;   argv++;

    if ( argc == 0 ) {
        cout << "Usage: commandName argument..." << endl;
        exit( 0 );
    }

    int counter = 0; 

loopBegin:
    if ( counter == argc )
        goto loopEnd;
        
    cout << "Handle argument " << argv[counter] << endl;
    counter++;
    goto loopBegin;
loopEnd:
    
    // . . .
    
    return 0;
}

Sujets connexes