Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menyimpan status program saat ini.
Sintaks
int setjmp(
jmp_buf env
);
Parameter
env
Variabel tempat lingkungan disimpan.
Nilai hasil
Mengembalikan 0 setelah menyimpan lingkungan tumpukan. Jika setjmp dikembalikan karena longjmp panggilan, ia mengembalikan value argumen longjmp, atau jika value argumen longjmp adalah 0, setjmp mengembalikan 1. Tidak ada pengembalian kesalahan.
Keterangan
Fungsi ini setjmp menyimpan lingkungan tumpukan, yang kemudian dapat Anda pulihkan, menggunakan longjmp. Ketika digunakan bersama-sama, setjmp dan longjmp menyediakan cara untuk menjalankan non-lokal goto. Mereka biasanya digunakan untuk meneruskan kontrol eksekusi ke penanganan kesalahan atau kode pemulihan dalam rutinitas yang sebelumnya disebut tanpa menggunakan konvensi panggilan atau pengembalian normal.
Panggilan untuk setjmp menyimpan lingkungan tumpukan saat ini di env. Panggilan berikutnya untuk longjmp memulihkan lingkungan yang disimpan dan mengembalikan kontrol ke titik tepat setelah panggilan yang setjmp sesuai. Semua variabel (kecuali variabel register) yang dapat diakses oleh kontrol penerimaan rutin berisi nilai yang mereka miliki ketika longjmp dipanggil.
Tidak dimungkinkan untuk digunakan setjmp untuk melompat dari asli ke kode terkelola.
Khusus Microsoft
Dalam kode Microsoft C++ di Windows, longjmp menggunakan semantik stack-unwinding yang sama dengan kode penanganan pengecualian. Aman untuk digunakan di tempat yang sama dengan pengecualian C++ yang dapat dinaikkan. Namun, penggunaan ini tidak portabel, dan dilengkapi dengan beberapa peringatan penting. Untuk detailnya, lihat longjmp.
END Khusus Microsoft
Catatan
Dalam kode C++ portabel, Anda tidak dapat mengasumsikan setjmp dan longjmp mendukung semantik objek C++. Secara khusus, setjmp/longjmp pasangan panggilan memiliki perilaku yang tidak terdefinisi jika mengganti setjmp dan longjmp oleh catch dan throw akan memanggil destruktor non-sepele untuk objek otomatis apa pun. Dalam program C++, kami sarankan Anda menggunakan mekanisme penanganan pengecualian C++.
Untuk informasi selengkapnya, lihat Menggunakan setjmp dan longjmp.
Persyaratan
| Rutin | Header yang diperlukan |
|---|---|
setjmp |
<setjmp.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
Lihat contoh untuk _fpreset.