Partager via


longjmp

Environnement de pile de restaure et paramètres régionaux d'exécution.

void longjmp(
   jmp_buf env,
   int value 
);

Paramètres

  • env
    Variable dans laquelle l'environnement est stocké.

  • correspondante
    valeur à retourner à l'appel d' setjmp .

Notes

La fonction d' longjmp restaure les paramètres régionaux d'environnement et d'exécution de pile précédemment stockés dans env par setjmp.setjmp et longjmp fournissent un moyen d'exécuter gotonon locale ; elles sont généralement utilisées pour lui passer le contrôle d'exécution au code de gestion des erreurs ou de récupération dans une routine précédemment appelée sans utiliser les conventions d'appel et de retour normales.

Un appel à setjmp provoque l'environnement actuel de pile à stocker dans env.Un appel suivant à longjmp restaure le contrôle enregistré d'environnement et retourne au point qui suit immédiatement l'appel correspondant d' setjmp .Résumés d'exécution comme si la valeur était été simplement retournée par l'appel d' setjmp .Les valeurs des variables (sauf les variables de registre) qui sont accessibles au contrôle de réception actif contiennent les valeurs qu'elles avaient lorsque longjmp a été appelé.les valeurs des variables de registre sont imprévisibles.la valeur retournée par setjmp doit être différente de zéro.Si la valeur est passée comme 0, la valeur 1 est substituée dans le retour réel.

Appelez longjmp avant que la fonction qu' setjmp appelé retourne ; sinon les résultats sont imprévisibles.

Observez les restrictions suivantes lors de l'utilisation longjmp:

  • Ne supposez pas que les valeurs des variables de registre restent les mêmes.Les valeurs des variables de registre dans setjmp appelant actuel ne peuvent être restaurées aux valeurs correctes après qu' longjmp ne soit exécuté.

  • N'utilisez pas longjmp au contrôle de migration à partir d'une routine d'interruption-gestion à moins que l'interruption soit provoquée par une exception à virgule flottante.Dans ce cas, un programme peut retourner d'un gestionnaire d'interruptions via longjmp s'il réinitialise d'abord le package mathématiques à virgule flottante en appelant _fpreset.

    Remarque veillez à l'aide de setjmp et longjmp dans les programmes C++.Dans la mesure où ces fonctions ne prennent pas en charge la sémantique d'objet C++, il est plus sûr d'utiliser le mécanisme de gestion des exceptions C++.

Pour plus d'informations, consultez À l'aide de le setjmp et le longjmp.

Configuration requise

routine

en-tête requis

longjmp

<setjmp.h>

Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.

bibliothèques

toutes les versions de Bibliothèques runtime C.

Exemple

Consultez l'exemple pour _fpreset.

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' exemples d'appel de code non managé.

Voir aussi

Référence

Processus et contrôle ambiance

setjmp