English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Bibliothèque standard en C - <setjmp.h>
Utilisation et exemple de la macro setjmp() de la bibliothèque C Macro de la bibliothèque C int setjmp(jmp_buf environnement)
Déclaration
int setjmp(jmp_buf environnement)
environnement -- C'est un objet de type jmp_buf utilisé pour stocker des informations d'environnement.
Cette macro peut ne pas renvoyer qu'une seule fois. La première fois, lors de l'appel direct, elle renvoie toujours 0. Lorsque longjmp est appelé avec des informations d'environnement définies, cette macro renvoie à nouveau, et à ce moment-là, la valeur qu'elle renvoie est transmise à longjmp en tant que deuxième paramètre.
Le présent exemple montre l'utilisation de la macro setjmp().
#include <stdio.h> #include <setjmp.h> static jmp_buf buf; void second(void) { printf("second\n"); // Imprimer longjmp(buf,1); // retourner à l'endroit d'appel setjmp - ce qui rend setjmp renvoie la valeur1 } void first(void) { second(); printf("first\n"); // Il est impossible d'exécuter cette ligne } int main() { if (! setjmp(buf)) { first(); // Avant d'entrer dans cette ligne, setjmp renvoie 0 } else { // Lorsque longjmp revient, setjmp renvoie1Par conséquent, nous entrons dans cette ligne printf("main\n"); // Imprimer } return 0; }
Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant :
second main