longjmp
还原堆栈环境和执行区域设置。
void longjmp(
jmp_buf env,
int value
);
参数
env
环境中存储的变量。值
要返回的值设置为 setjmp 调用。
备注
longjmp 函数以 env 以前保存的堆栈环境和执行区域设置由 setjmp。setjmp 和 longjmp 提供一种执行非本地 goto;它们通常用于将执行控件绑定到错误处理或在以前调用实例的还原代码不使用常规的调用并返回约定。
为 setjmp 的调用在 env使当前堆栈环境保存。以后对 longjmp 还原已保存的环境并将控制权返回给相应的 setjmp 之后的点调用。执行恢复,就象 值 由 setjmp 调用返回。它们具有所有变量的值 (除寄存器变量) 用于接收控件的实例是可访问的包含值 longjmp 时调用。register 变量的值是不可预知的。setjmp 返回的值必须是非零。如果 值 作为 0,值 1 在实际替换返回。
调用 longjmp ,在调用之前 setjmp 函数返回;否则结果是不可预知的。
注意以下限制,在使用 longjmp时:
不要假定,寄存器变量的值将保持不变。,在 longjmp 执行后,寄存器变量的值在调用 setjmp 的实例的不能还原到适当的值。
,除非该中断由一个浮点异常,而不要使用 longjmp 到发送控件在一中断进程的实例之外。在这种情况下,程序从中断处理程序返回通过 longjmp ,则通过调用 _fpreset首先重新初始化浮点数学包。
,在使用 setjmp 和 longjmp 在 C++ 程序时,说明小心。由于这些函数不支持 C++ 对象语义,使用异常处理机制的 C++ 会更加安全。
有关更多信息,请参见 使用 setjmp 和 longjmp。
要求
实例 |
必需的头 |
---|---|
longjmp |
setjmp.h |
有关其他的兼容性信息,请参见中介绍的 兼容性 。
库
C 运行库的所有版本。
示例
为 _fpreset参见示例。
.NET Framework 等效项
不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见 平台调用示例。