首页 > 其他 > 详细

setjmp()与longjmp()

时间:2014-12-23 19:32:57      阅读:239      评论:0      收藏:0      [点我收藏+]
setjmp()与longjmp() 和 函数与return有点类似
setjmp() : 直接调用时返回0,通过longjmp调用,返回longjmp指定的数值
longjmp():调用longjmp()运行的指针会跳到

例子
#include <stdio.h>  
#include <setjmp.h>  
   
static jmp_buf buf;  
   
void second(void) {  
    printf("second\n");         // 打印  
    longjmp(buf,1);             // 跳回setjmp的调用处 - 使得setjmp返回值为1  
}  
   
void first(void) {  
    second();  
    printf("first\n");          // 不可能执行到此行  
}  
   
int main() {     
    if ( ! setjmp(buf) ) {  
        first();                // 进入此行前,setjmp返回0  
    } else {                    // 当longjmp跳转回,setjmp返回1,因此进入此行 
        printf("main\n");       // 打印  
    }  
   
    return 0;  
}  

上述程序将输出:
second
main

参考:

setjmp()与longjmp()

原文:http://blog.csdn.net/iluckyning/article/details/42105693

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!