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.
#include <stdio.h> #include <stdlib.h> int main( int argc, char * argv[] ) { int counter = 0; argc--; argv++; if ( argc == 0 ) { printf( "Usage: commandName argument...\n" ); exit( 0 ); } loopBegin: if ( counter == argc ) goto loopEnd; printf( "Handle argument %s\n", argv[counter] ); counter++; goto loopBegin; loopEnd: // . . . return 0; }
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 :