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.