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

setjmp与longjmp

时间:2014-10-12 13:51:28      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   ar   sp   art   on   log   ef   

这里有编写了很好的文章: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

标签:blog   http   io   ar   sp   art   on   log   ef   

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

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