码迷,mamicode.com
首页 > 其他好文 > 详细

C setjmp和longjmp

时间:2017-07-03 14:08:05      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:blog   amp   调用链   保存   main   oid   print   got   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

标签:blog   amp   调用链   保存   main   oid   print   got   longjmp   

原文地址:http://www.cnblogs.com/m2492565210/p/7110352.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!