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