jmp_buf类型
描述:
该类型是一种数组类型,适合保存恢复调用环境所需的信息。调用宏setjmp的环境应包含足够信息,以便调用longjmp函数将执行返回到正确的块,并调用该块(如果以递归方式调用。)。它不包括浮点状态标志、打开的文件或者抽象机的任何其它组件的状态。
GCC编译器中,该类型定义如下:
#define _JBLEN 16
#define _JBTYPE int
typedef _JBTYPE jmp_buf[_JBLEN];
范例:
|
|
输出:
The setjmp macro has been called.
Call the func function.
The code before the longjmp function in the func function will be executed.
The longjmp function has been called.
该程序首先评估if语句的控制表达式setjmp(environment),这次返回值来自宏setjmp的直接调用,所以值为0;接着执行第26、27行语句,然后调用func函数;执行longjmp(environment, 1);语句后,程序跳转至main函数的setjmp(environment)处;再次评估控制表达式setjmp(environment),这次返回值来自longjmp(environment, 1)函数调用,所以返回值为1;最后执行第22、23行语句。
相关内容:
setjmp | 保存调用环境的宏。 |
longjmp | 恢复调用环境的函数。 |