Référence du fichier setjmp.h


Description détaillée

Cet entête contient les déclarations nécéssaire à l'utilisation des sauts non locaux.


Définition de type

typedef __array_type jmp_buf
 état de l'environnement.

Fonctions

int setjmp (jmp_buf env)
 stocke l'environnement
void longjmp (jmp_buf env, int val)
 restaure l'environnement


Documentation des définition de type

typedef __array_type jmp_buf

Contient l'état nécessaire pour restaurer l'environnement après un saut non local.


Documentation des fonctions

void longjmp ( jmp_buf  env,
int  val 
)

Restaure l'environnement à celui actuel au moment du dernier appel à setjmp() avec le même buffer.

Le comportement est indéfini s'il n'y a jamais eu d'appel à longjmp() avec cet environnement, ou si l'exécution de la fonction ayant appelé en dernier longjmp() avec cet environnement est terminée (que la fonction ait exécuté un return ou à cause d'un autre longjmp()).

int setjmp ( jmp_buf  env  ) 

Stocke l'environnement nécessaire en vue d'une restauration par longjmp().

Au retour de setjmp() suite à un longjmp(), les valeurs des variables locales à la fonction appelant setjmp() non volatiles et ayant été modifiées depuis l'appel à setjmp() sont non définies; tous les autres objets acessibles ont la valeur qu'ils avaient au moment de longjmp().

Retourne
0 si le retour est dû à l'exécution normale

la valeur passée à longjmp() dans le cas contraire (sauf si on passe 0 à longjmp() auquel cas setjmp() retourne 1).

setjmp() ne peut apparaître que dans des contextes limités:

  • comme étant la totalité de l'expression contrôlant une selection (if, switch) ou une itération (while, do, for);

  • comparé à une expression entière constante, l'ensemble étant la totalité de l'expression contrôlant une selection (if, switch) ou une itération (while, do, for);

  • comme opérande à !, l'ensemble étant la totalité de l'expression contrôlant une selection (if, switch) ou une itération (while, do, for);

  • comme la totalité de l'expression d'un expression-statement.

Note:
Comme toutes les fonctions en C, setjmp peut être une macro. Mais au contrainre des autres, le comportement est non défini si la définition de la macro est supprimée avec #undef.


Copyright © 2008 -- 2009 Jean-Marc Bourguet Accueil Pages sur le C