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
广告