Ở đây ta xem setjmp và longjmp trong C. Chúng nằm trong thư viện setjmp.h.
setjmp(jmp_buf buf) : dùng buf lưu vị trí hiện tại và trả về 0. longjmp(jmp_buf buf, i) : quay về vị trí trỏ bởi buf và trả về i.
Dùng trong C để xử lý ngoại lệ (exception handling). setjmp() như khối try, longjmp() như câu lệnh throw. longjmp() chuyển điều khiển về điểm setjmp() trỏ tới.
Ví dụ in số 100 lần không dùng đệ quy, vòng lặp, macro:
Ví dụ
#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;
}
Kết quả
5555555555555555555555555555555555555555555555555555555555555555555555555555 555555555555555555555555