setjmp
Enregistre l’état actuel du programme.
Syntaxe
int setjmp(
jmp_buf env
);
Paramètres
env
Variable dans laquelle l’environnement est stocké.
Valeur retournée
Retourne la valeur 0 après l’enregistrement de l’environnement de pile. Si setjmp
elle est retournée en raison d’un longjmp
appel, elle retourne l’argument value
de longjmp
, ou si l’argument value
de longjmp
0, setjmp
retourne 1. Il n’y a pas de retour d’erreur.
Notes
La fonction setjmp
enregistre un environnement de pile, que vous pouvez restaurer par la suite à l’aide de longjmp
. Quand elles sont utilisées ensemble, les fonctions setjmp
et longjmp
offrent un moyen d’exécuter un goto
non local. Ils sont généralement utilisés pour passer le contrôle d’exécution à la gestion des erreurs ou code de récupération dans une routine appelée précédemment sans utiliser les conventions normales d’appel ou de retour.
Un appel à setjmp
enregistre l’environnement de pile actuel dans env
. Un appel ultérieur à longjmp
restaure l’environnement enregistré et redonne le contrôle au point situé de suite après l’appel setjmp
correspondant. Toutes les variables (à l’exception des variables de Registre) accessibles à la routine recevant le contrôle contiennent les valeurs qu’elles possédaient au moment où longjmp
a été appelé.
Il n’est pas possible d’utiliser setjmp
pour passer du code natif au code managé.
Section spécifique à Microsoft
Dans le code Microsoft C++ sur Windows, longjmp
utilise la même sémantique de déroulement de pile que le code de gestion des exceptions. Il est sûr d’utiliser dans les mêmes endroits que les exceptions C++ peuvent être déclenchées. Toutefois, cette utilisation n’est pas portable et est fournie avec quelques mises en garde importantes. Pour plus d’informations, consultez longjmp
.
FIN de la section spécifique à Microsoft
Remarque
Dans le code C++ portable, vous ne pouvez pas supposer setjmp
et longjmp
prendre en charge la sémantique d’objet C++. Plus précisément, une paire d’appels a un setjmp
/longjmp
comportement non défini si elle remplace le setjmp
et longjmp
par catch
et throw
appelle tous les destructeurs non trivials pour tous les objets automatiques. Dans les programmes C++, nous vous recommandons d’utiliser le mécanisme de gestion des exceptions C++.
Pour plus d’informations, consultez Utilisation setjmp
et longjmp
.
Spécifications
Routine | En-tête requis |
---|---|
setjmp |
<setjmp.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
Consultez l’exemple pour _fpreset
.
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour