C 语言 setjmp() 函数用于保存当前执行环境(寄存器、栈指针等)到 jmp_buf,供 longjmp 跳回。
原型
int setjmp(jmp_buf env);直接调用时返回 0;longjmp 跳回时返回 longjmp 指定的值。
参数
env- 保存执行环境的 jmp_buf 变量。
示例
#include <stdio.h>
#include <setjmp.h>
jmp_buf buf;
int main() {
if (setjmp(buf) == 0) {
printf("第一次执行\n");
} else {
printf("从 longjmp 跳回\n");
}
return 0;
}输出:
第一次执行注意事项
setjmp/longjmp 跳过多层函数调用,是 C 语言里实现异常的古老方式,需谨慎使用。