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

setjmp()与longjmp()

时间:2014-12-23 19:34:44      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:setjmp   longjmp   

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()

标签:setjmp   longjmp   

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

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