ในส่วนนี้ เราจะมาดูกันว่า setjump และ longjump คืออะไรใน C โดย setjump() และ longjump() จะอยู่ที่ไลบรารี setjmp.h ไวยากรณ์ของฟังก์ชันทั้งสองนี้มีลักษณะดังนี้
setjump(jmp_buf buf) : uses buf to store current position and returns 0. longjump(jmp_buf buf, i) : Go back to place pointed by buf and return i.
สิ่งเหล่านี้ใช้ใน C สำหรับการจัดการข้อยกเว้น setjump() สามารถใช้เป็น try block และ longjump() สามารถใช้เป็นคำสั่ง throw longjump() ถ่ายโอนการควบคุม pointe ซึ่งชี้โดย setjump()
เราจะมาดูวิธีการพิมพ์ตัวเลข 100 ครั้งโดยไม่ต้องใช้การเรียกซ้ำ การวนซ้ำ หรือการขยายมาโคร เราจะใช้ฟังก์ชัน setjump() และ longjump() เพื่อดำเนินการดังกล่าว
ตัวอย่าง
#include <stdio.h>
#include <setjmp.h>
jmp_buf buf;
main() {
int x = 1;
setjmp(buf); //set the jump position using buf
printf("5"); // Prints a number
x++;
if (x <= 100)
longjmp(buf, 1); // Jump to the point located by setjmp
} ผลลัพธ์
5555555555555555555555555555555555555555555555555555555555555555555555555555 555555555555555555555555