首页 > 代码库 > setjmp与longjmp
setjmp与longjmp
这里有编写了很好的文章: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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。