Aracılığıyla paylaş


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

Ayrıca bkz.

İşlem ve ortam denetimi
longjmp