异常处理
虽然是个不常用的东西但是看到它的进化版是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可以实现函数多种异常信息的返回
但是这种长跳转还是应该避免使用。