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

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

setjmp() fonksiyonu

Bildirim

setjmp(env); (Makro)

Açıklama

Geçerli yürütme ortamını jmp_buf türünde bir env değişkenine kaydeder. Bu değişken daha sonra geçerli çalıştırma ortamını longjmp() fonksiyonu ile geri yüklemek için kullanılabilir.

Eğer bu makro doğrudan makro çağrısından dönüş yaparsa, sıfır değeri, bir longjmp() fonksiyon çağrısından dönüş yaparsa, longjmp() fonksiyonuna ikinci bir argüman olarak geçirilen değeri geri döndürür.

Bu makro, kodun çalıştığı noktada, çağrı yapan ortamının o andaki durumu hakkındaki bilgileri env değişkenine atar, böylece daha sonra longjmp() fonksiyon çağrısı ile geri yüklenebilir.

Env değişkenine yüklenen bilgilerle longjmp() fonksiyonunu çağırmak, aynı koşulları geri yükler ve kontrolü, sıfır olmayan bir değer olarak değerlendirilen aynı noktaya (setjmp çağrısı) geri döndürür.

Parametreler

env: Programın çalışma ortamının kaydedileceği jmp_buf veri türünden değişken değeridir.

Dönüş değeri

Makro orijinal kod tarafından çağrılmışsa ve çalıştırma ortamı env değişkenşne kaydedilmişse sıfır değeri, eğer lokal olmayan bir atlama yeni gerçekleştirildiyse sıfır olmayan bir değer geri döndürülür.

Dönüş değeri, longjmp() fonksiyonuna iletilen değerle aynıdır.

Ö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.