• posix standartlarina gore, stack'i bir buffer'a kaydetmeye yarayan c fonksiyonu. daha sonra longjmp ile stack'i geri getirebilir cali$maya kaldiginiz yerden devam edebilirsiniz.. programin genel mantigini bozmasina ragmen unix altinda tek thread'de timeout'lu bilmemneli i$lemler yapmaya kalktiginizda hayat kurtarir. (bkz: sigsetjmp)
  • c ile exception handling yapmak icin longjump ile birlikte kullanilir. buna try { } catch { } blogu seklinde macro yazan otuzbirciler vardir.
  • posix standartları ve standart c kütüphanesi* kapsamında tanımlı, fonksiyon yerelinde* olmayan (non-local) koşulsuz dallanmalar (bkz: jmp) için goto alternatifi olarak düşünülmüş mekanizma. setjmp.h başlık dosyasında*, implementasyon spesifik bir şekilde macro veya fonksiyon olarak tanımlanmış halde bulunur. setjmp çağrısında, fonksiyona geçilecek buffer değişkenine çağrının yapıldığı akış noktasındaki program state'ini kaydeder. dolayısıyla application binary interface'e de bağlı olarak; program counter, stack pointer ve bilumum genel amaçlı yazmaç* belleğe kaydedilmiş olur. program içinde farklı bir noktada, işbu buffer değişkeni longjmp fonksiyonuna argüman olarak geçilerek çağrı yapıldığında; kayıt altına alınmış state yüklenerek, akış program counter'ın gösterdiği adresten itibaren devam eder. dolayısıyla setjmp ile işaretlenmiş noktadaki bellek adresine koşulsuz dallanma yapılmış olur. setjmp-longjmp ikilisi genelde exception handling mekanizması için kullanılır.

    her ne kadar structured program theorem'e ve bilumum akademik zat-ı muhterem'e (bkz: edsger wybe dijkstra) göre goto kullanımından kat'i surette kaçınmak gerekse de, yerinde kullanıldığında goto ve türevleri gayet faydalı olabilmektedir. setjmp ve longjmp fonksiyonlarının signal handling mekanizmasını hedefleyen, sigsetjmp ve siglongjmp isimli varyantları da bulunmaktadır.
hesabın var mı? giriş yap