Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Programın geçerli durumunu kaydeder.
Sözdizimi
int setjmp(
jmp_buf env
);
Parametreler
env
Ortamın depolandığı değişken.
Dönüş değeri
Yığın ortamını kaydettikten sonra 0 döndürür. Bir longjmp çağrı nedeniyle döndürürsesetjmp, bağımsız değişkenini longjmpdöndürür value veya bağımsız değişkeni longjmp 0 isevalue, setjmp 1 döndürür. Hata döndürme yok.
Açıklamalar
setjmp işlevi, kullanarak longjmpdaha sonra geri yükleyebileceğiniz bir yığın ortamı kaydeder. Birlikte setjmp kullanıldığında ve longjmp yerel gotoolmayan bir yürütme yolu sağlar. Bunlar genellikle normal çağrı veya dönüş kurallarını kullanmadan daha önce çağrılan bir yordamda hata işleme veya kurtarma koduna yürütme denetimi geçirmek için kullanılır.
geçerli yığın ortamını 'enva setjmp kaydetme çağrısı. Sonraki bir çağrı longjmp , kaydedilen ortamı geri yükler ve denetimi ilgili setjmp çağrıdan hemen sonraki noktaya döndürür. Rutin alma denetimi tarafından erişilebilen tüm değişkenler (yazmaç değişkenleri hariç) çağrıldığında longjmp sahip oldukları değerleri içerir.
Yerel koddan yönetilen koda atlamak için kullanmak setjmp mümkün değildir.
Microsoft'a Özgü
Windows üzerinde Microsoft C++ kodunda, longjmp özel durum işleme koduyla aynı yığın geri sarma semantiğini kullanır. C++ özel durumlarının oluşturulabileceği yerlerde kullanmak güvenlidir. Ancak, bu kullanım taşınabilir değildir ve bazı önemli uyarılar ile birlikte gelir. Ayrıntılar için bkz. longjmp.
END Microsoft'a Özgü
Not
Taşınabilir C++ kodunda, C++ nesne semantiğini varsayamaz setjmp ve longjmp destekleyemezsiniz. Özellikle, bir setjmp/longjmp çağrı çifti ile longjmp catch değiştirildiğinde setjmp tanımsız bir davranışa sahiptir ve throw herhangi bir otomatik nesne için önemsiz olmayan yıkıcıları çağırır. C++ programlarında C++ özel durum işleme mekanizmasını kullanmanızı öneririz.
Daha fazla bilgi için bkz. ve longjmpkullanmasetjmp.
Gereksinimler
| Yordam | Gerekli başlık |
|---|---|
setjmp |
<setjmp.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
örneğine _fpresetbakın.