异常处理
虽然是个不常用的东西但是看到它的进化版是C++的catch和throw就有点动心
#include <stdio.h>
#include <setjmp.h>
jmp_buf buf;
void b()
{
longjmp(buf, 1);
printf("cc");
}
int main()
{
if(setjmp(buf))
;
else
b();
printf("dd");
return 0;
}
setjmp(buf) 必须先调用,而第一次调用的时候返回0,在longjmp(buf, 1)后,跳回setjmp处不过此时返回1. 因此在函数调用时先调用setjmp去switch可以实现函数多种异常信息的返回
但是这种长跳转还是应该避免使用。