English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base C

Contrôle de flux C

Fonctions en C

Tableaux en C

Pointeurs en C

Chains de caractères en C

Structure C

Fichier C

Autres C

Manuel de référence C

Méthode et exemple d'utilisation de la fonction longjmp() dans la bibliothèque C

Bibliothèque standard en C - <setjmp.h>

Fonction de bibliothèque C void longjmp(jmp_buf environment, int value) Restaurer le dernier appel setjmp() L'environnement sauvegardé par la macrojmp_buf La configuration des paramètres est déterminée par l'appel setjmp() précédent.

Déclaration

Voici la déclaration de la fonction longjmp().

void longjmp(jmp_buf environment, int value)

paramètre

  • environment -- C'est un type jmp_buf de l'objet, qui contient des informations sur l'environnement stocké lors de l'appel setjmp.

  • value -- C'est setjmp Valeur de l'expression à juger.

Valeur de retour

Cette fonction ne renvoie aucune valeur.

Exemple en ligne

Le exemple suivant montre l'utilisation de la fonction longjmp().

#include <stdio.h>
#include <setjmp.h>
static jmp_buf buf;
void second(void) {
    printf("second\n");         // Imprimer
    longjmp(buf,1);             // retourner à l'endroit de l'appel setjmp - qui rend le retour de setjmp égale à1
}
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

Bibliothèque standard en C - <setjmp.h>