longjmp
restaure l'environnement de la pile et les paramètres régionaux d'exécution
void longjmp(
jmp_buf env,
int value
);
Paramètres
env
Variable dans laquelle l'environnement est enregistré.correspondante
Valeur à retourner à l'appel de setjmp.
Notes
La fonction longjmp restaure les paramètres régionaux d'environnement et de pile précédemment enregistrés dans env par setjmp. setjmp et longjmp donne un moçyen d'exécuter un goto non local; Ils sont généralement utilisés pour passer le contrôle d'exécution au code de gestion des erreurs ou le code récupération dans une routine appelée précédemment sans utiliser l'appel standard ou les conventions de retour.
Un appel à entraîne setjmp l'environnement actuel de pile à stocker dans env. Un appel suivant à longjmp restaure l'environnement enregistré et retourne le contrôle au point juste après l'appel correspondant setjmp. Résumés d'exécution que si a la valeur vient d'être retournée par l'appel de setjmp. Les valeurs des variables (à l'exception des variables de registre) accessibles au contrôle récepteur de routine 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 remplacée dans le retour réel.
Appelez longjmp avant que la fonction retourne setjmp appelé ; sinon les résultats sont imprévisibles.
Observez les restrictions suivantes lors de l'utilisation longjmp:
Ne voulez pas que les valeurs des variables de registre reste inchangé. Les valeurs des variables de registre dans setjmp appelant actuel ne peuvent être restaurées les valeurs correctes lorsqu' longjmp exécuté.
N'utilisez pas longjmp au contrôle de migration depuis une routine d'interruption- gestion sauf si 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 tout d'abord le progiciel arithmétique à virgule flottante en appelant _fpreset.
Remarque Fasse prudent lorsque vous utilisez setjmp et longjmp dans les applications C++. Comme ces fonctions ne prennent pas en charge la sémantique de l'objet C++, il est plus sécurisé pour utiliser le mécanisme de gestion des exceptions C++.
Pour plus d'informations, consultez Using setjmp and longjmp.
Configuration requise
Routine |
En-tête requis |
---|---|
longjmp |
<setjmp.h> |
Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.
Bibliothèques
Toutes les versions des bibliothèques Runtime C.
Exemple
Consultez l'exemple de _fpreset.
Équivalent .NET Framework
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.