setjmp() และ longjmp() ใน setjmp.h ใช้สำหรับ Exception Handling แบบต่ำระดับ
ไวยากรณ์
setjmp(jmp_buf buf) // บันทึกตำแหน่งปัจจุบัน คืนค่า 0 longjmp(jmp_buf buf, int val) // กระโดดกลับไปตำแหน่งที่ buf บันทึกไว้ คืนค่า val
setjmp คล้าย try block, longjmp คล้าย throw statement
ตัวอย่าง: พิมพ์เลข 100 ครั้ง
#include <stdio.h>
#include <setjmp.h>
jmp_buf buf;
int main() {
int x = 1;
setjmp(buf);
printf("5");
x++;
if (x <= 100)
longjmp(buf, 1);
return 0;
}
ผลลัพธ์
5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555