Section courante

A propos

Section administrative du site

LONGJMP

Long saut
Langage C setjmp.h

Syntaxe

void longjmp(jmp_buf env,int val);

Paramètres

Nom Description
env Ce paramètre permet d'indiquer l'environnement
val Ce paramètre permet d'indiquer la valeur

Description

Cette fonction permet d'effectuer la restauration de la pile dans un saut non local.

Algorithme

MODULE LONGJMP(env, val)
   * Vérifie si l'environnement sauvegardé est valide
   SI env est NULL ALORS
      raise Error("Environnement invalide")
   FIN SI

   * Ajuste la valeur de retour si nécessaire
   SI val = 0 ALORS
      val ← 1
   FIN SI

   * Restaurer l'environnement d'exécution
   restore_execution_state(env)

   * Simule le retour de setjmp avec la valeur val
   exit_function_with_return_value(val)

Remarques

Exemple

Voici un exemple permettant de sauvegarder l'environnement de façon à ce qu'il passe deux fois sur le même code :

Essayer maintenant !
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <setjmp.h>
  4.  
  5. int main() {
  6.  jmp_buf env;
  7.  int value = -1;
  8.  int errCode = setjmp(env);
  9.  if(errCode != 0) {
  10.   printf("Longjmp est appelé\n");
  11.   return -1;
  12.  } else {
  13.   printf("Appeler setjmp\n");
  14.   longjmp(env,value);
  15.   return 0;
  16.  }
  17. }

on obtiendra le résultat suivant :

Appeler setjmp
Longjmp est appelé

Voir également

Langage de programmation - C - Référence de procédures et fonctions - setjmp
Langage de programmation - C - Référence de procédures et fonctions - signal
Langage de programmation - C++ - Référence de procédures et fonctions - longjmp

Références

Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 733.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 164.

Dernière mise à jour : Mardi, le 28 juillet 2015