首页 > 其他 > 详细

setjmp与longjmp

时间:2014-10-12 12:09:19      阅读:253      评论:0      收藏:0      [点我收藏+]

这里有编写了很好的文章:http://blog.csdn.net/cscmaker/article/details/7584433,我自己试了一个小例子。

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

void my_print(const char *str, jmp_buf jb)
{
    printf("in my_print()\n");

    if (str == NULL) {
        longjmp(jb, 2);
    }
    printf("my_print: %s\n", str);
}

int main()
{
    int ret = 0;
    char *str = NULL;

    jmp_buf jbuf;
    int jmp_ret = setjmp(jbuf);
    if (jmp_ret == 2) {
        printf("ERROR: name == NULL\n");
        str = "Hevake";
    }
    my_print(str, jbuf);

    return 0;
}

输出结果是:

in my_print()
ERROR: name == NULL
in my_print()
my_print: Hevake


我们可以用setjmp与longjmp实现类似异常处理的功能。

setjmp与longjmp

原文:http://my.oschina.net/hevakelcj/blog/326966

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