setjmp.h头文件可以让你不遵循通常的函数调用、函数返回顺序。setjmp()函数把当前执行环境的信息(例如,指向当前指令的指针)储存在jmp_buf类型(定义在setjmp.h头文件中的数组类型)的变量中,然后longjmp()函数把执行转至这个环境中。这些函数主要是用来处理错误条件,并不是通常程序流程控制的一部分。
| setjmp.h中的函数 | |
| 原型 | 描述 |
| int setjmp(jmp_buf env) | 把调用环境储存在数组env中,如果是直接调用,则返回0;如果是通过longjmp()调用,则返回非0 |
| void longjmp(jmp_buf env, int val) | 恢复最近的setjmp()调用(设置env数组)储存的环境;完成后,程序继续像调用setjmp()那样执行该函数,返回val(但是该函数不允许返回0,会将其转换成1) |