C 标准库 - <setjmp.h>

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 语言里实现异常的古老方式,需谨慎使用。