这里有编写了很好的文章: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实现类似异常处理的功能。
时间: 2024-11-13 08:57:55