C setjmp和longjmp

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C setjmp和longjmp相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <setjmp.h>

void test(jmp_buf *env)
{
    printf("setjmp test\n");
    longjmp(env, 1);
}

int main()
{
    jmp_buf env;

    int ret = setjmp(env);

    if (!ret)
        test(&env);
    else
        printf("longjmp... %d\n", ret);

    return 0;
}

int setjmp(jmp_buf env):函数会保存当前执行环境,初次调用时会返回0值;在调用链中如果遇到void long_jmp(jmp_buf env, int value)时会返回该处,并取得value值。

与goto相比,longjmp可以实现函数间的跳转,goto只能在函数内部跳转。

以上是关于C setjmp和longjmp的主要内容,如果未能解决你的问题,请参考以下文章

使用 longjmp/setjmp 进行 C 错误处理都有哪些“好”方法?

C语言中利用setjmp和longjmp做异常处理

setjmp和longjmp浅析

setjmp和longjmp浅析

《C语言杂记》C语言异常处理之 setjmp()和longjmp()

c setjmp longjmp