setjmp
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 longjmp
dö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 longjmp
daha sonra geri yükleyebileceğiniz bir yığın ortamı kaydeder. Birlikte setjmp
kullanıldığında ve longjmp
yerel goto
olmayan 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ı 'env
a 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 longjmp
kullanmasetjmp
.
Gereksinimler
Yordam | Gerekli başlık |
---|---|
setjmp |
<setjmp.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
örneğine _fpreset
bakın.