ZBLOG

setjmp longjmp demo

Here’s a simple example that demonstrates the usage of setjmp and longjmp in C:

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

static jmp_buf env;

void foo(void);

int main()
{
    if (setjmp(env) == 0)
    {
        printf("Calling foo...\n");
        foo();
        printf("Returned from foo.\n");
    }
    else
    {
        printf("Jumped back to main!\n");
    }

    return 0;
}

void foo(void)
{
    printf("Inside foo. Jumping back to main...\n");
    longjmp(env, 1);
}

In this program, we use setjmp to save the current state at the beginning of main, and then call a function foo. Inside foo, we print a message and then call longjmp to jump back to the saved state in main.

When we run this program, it produces the following output:

Calling foo...
Inside foo. Jumping back to main...
Jumped back to main!

As you can see, when we call longjmp from inside foo, it causes the program execution to “jump” back to where we called setjmp in main. This allows us to implement non-local control flow within our program.

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://sdn.0voice.com/?id=970

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?