Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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’existe aucun 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.