C 语言中的 setjump() 和 longjump()


在本节中,我们将学习什么是 C 中的 setjump 和 longjump。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 块,longjump() 可用作 throw 语句。longjump() 将控制权传输到 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

更新于: 2019 年 7 月 30 日

2K + 浏览量

开启你的 职业

完成课程以获得认证

开始学习
广告