美文网首页
setjmp和logjmp

setjmp和logjmp

作者: arkliu | 来源:发表于2022-12-12 10:26 被阅读0次

    setjmp和logjmp是配合使用的,他们可以实现在不同函数间的跳转

    • setjmp设置跳转点,第一次设置跳转点,返回值是0
    • longjmp跳转到setjmp设置的跳转点之后, 再执行setjmp, 这时setjmp会返回1

    看下面栗子:

    #include <stdio.h>
    #include <setjmp.h>
    
    static jmp_buf buf;
    
    void fun_sen() {
        printf("fun_sen runs..\n");
        longjmp(buf, 33);
    }
    
    void fun() {
        printf("fun before runs..\n");
        fun_sen();
        printf("fun after runs..\n");   
    }
    
    int main(void)
    {
        int i;
        if (!setjmp(buf))
        {
            fun();
        } else {
            printf("main runs..\n");   
        }
        
        return 0;
    }
    
    image.png

    相关文章

      网友评论

          本文标题:setjmp和logjmp

          本文链接:https://www.haomeiwen.com/subject/hswmxdtx.html