longjmp
Geri yükleme ortamı ve yürütme yerel yığın.
void longjmp(
jmp_buf env,
int value
);
Parametreler
env
Ortam saklandığı değişkeni.değer
İçin döndürülen değeri setjmp çağırın.
Notlar
longjmp İşlevi bir yığın ortamı geri yükler ve önceden kaydedilmiş yürütme yerel env tarafından setjmp.setjmpve longjmp bir yerel olmayan yürütmek için bir yol sağlar goto; Bunlar genellikle normal aramayı kullanmadan daha önce çağrılan yordam kodda hata işleme veya kurtarma için yürütme denetimi iletmek için kullanılan ve kurallarına geri dönün.
Çağrı setjmp de kaydedilmesi geçerli yığın ortamı neden env.Sonradan longjmp kaydedilmiş ortam geri yükler ve denetim noktasına karşılık gelen hemen döner setjmp çağırın.Yürütme devam eder gibi değeri yalnızca tarafından iade edilmiş setjmp çağırın.Sahip oldukları ne zaman değerleri denetim alma yordamına erişilebilir (değişkenleri kaydetme dışında) tüm değişkenlerin değerlerini içeren longjmp çağrıldı.Register değişkenlerin değerlerini tahmin edilemez.Tarafından döndürülen değeri setjmp sıfırdan farklı olmalıdır.Değeri geçirilen 0 1 değeri gerçek karakteriyle geçmesidir.
Call longjmp adı verilen işlevi önce setjmp verir; Aksi halde sonuçlar tahmin edilemez.
Kullanırken aşağıdaki kısıtlamaları gözlemlemek longjmp:
Register değişkenlerin değerlerini aynı kalacak varsayalım değil.Rutin arama kaydı değişkenlerin değerlerini setjmp sonra uygun değerlere geri yüklenmeyebilir longjmp yürütülür.
Kullanmak istemediğiniz longjmp kesme tarafından bir kayan nokta özel durumu nedeniyle sürece bir kesme işleme yordamı denetimini aktarmak.Bu durumda, bir program ve kesme isteği işleyicisi gelen döndürebilir longjmp yeniden onu önce kayan nokta matematiğini paketi çağırarak başlatır, _fpreset.
Not kullanırken dikkatli olun setjmp ve longjmp C++ programlarında.Bu işlevler C++ nesnesi semantiği desteklemediğinden, C++ özel durum işleme mekanizmasını kullanmanız daha güvenlidir.
Daha fazla bilgi için bkz: kullanarak setjmp ve longjmp.
Gereksinimler
Yordamı |
Gerekli başlık |
---|---|
longjmp |
<setjmp.h> |
Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.
Kitaplıkları
Tüm sürümleri c çalışma zamanı kitaplıkları.
Örnek
Örnek için bkz: _fpreset.
.NET Framework Eşdeğeri
Yoktur. Standart c işlevi çağırmak için kullanmak PInvoke. Daha fazla bilgi için bkz: Platform Çağırma örnekleri.