Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /var/www/vhosts/bilgigunlugum.net/httpdocs/index.php on line 43
C Programlama

BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > C standart kütüphanesi > <setjmp.h> > longjmp

longjmp() fonksiyonu

Bildirim

void longjmp(jmp_buf env, int val);

Açıklama

Env parametresini val parametresi olarak dolduran setjmp() fonksiyonunu değerlendirerek, ortamı env parametresi tarafından belirtilen duruma geri yükler.

Fonksiyon hiçbir zaman çağrıldığı noktaya geri dönmez. Bunun yerine, kontrolü setjmp'in env'i doldurmak için en son kullanıldığı noktaya aktarır ve tüm ifadeyi val olarak değerlendirir (sıfır olmadıkça, bu durumda 1 değeri olarak değerlendirir).

Parametreler

env: Bir önceki setjmp() fonksiyon çağrısı ile doldurulan ve ortamı o noktaya geri yüklemek için bilgi içeren jmp_buf değişken değeridir.

val: Setjmp() fonksiyonunun değerlendirildiği değerdir. Eğer bu sıfır ise, ifade 1 olarak değerlendirilir.

Dönüş değeri

Yok.

Örnek


#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h>

int main (void) {
    jmp_buf env;
    int val;

    /* Ortamı kaydetme */
    val = setjmp(env);

    if(val!=0) {
       printf("Bu noktaya longjmp() fonksiyonu ile ve %d değeri ile erişim sağlandı!", val);
       exit(0);
    }

    printf("longjmp() fonksiyon çağrısı.\n");
    longjmp(env, 7);

    return 0;
}

Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:

longjmp() fonksiyon çağrısı.
Bu noktaya longjmp() fonksiyonu ile ve 7 değeri ile erişim sağlandı!

Yukarıdaki program, önce setjmp() fonksiyonu ile ortam değerlerini env değişkenine kaydeder. Sonra, longjmp() fonksiyonu env değişken değerini 7 değeri ile birlikte kullanarak önceden env değişkenine kaydedilen ortama (setjmp() fonksiyonunun çağrıldığı işlem satırına) dönüş yapar ve o satıdan itibaren program çalışmasına devam eder.