C库宏int setjmp(jmp_buf environment) 环境保存当前的环境的函数longjmp().通过以后使用到环境变量。如果该宏直接从宏调用返回,返回零,但如果它返回 longjmp().函数调用,那么返回的值传递给longjmp的第二个参数。
声明
以下是声明的setjmp()宏。
int setjmp(jmp_buf environment)
参数
-
environment -- 这是jmp_buf类型的存储环境的信息,其中的对象。
返回值
这个宏可以返回不止一次。第一次其直接调用,它总是返回为零。当调用longjmp的设置环境的信息,的宏再次返回;现在它返回的值传递给longjmp的第二个参数。
例子
下面的例子显示了setjmp()宏的用法。
#include <stdio.h> #include <stdlib.h> #include <setjmp.h> int main() { int val; jmp_buf env_buffer; /* save calling environment for longjmp */ val = setjmp( env_buffer ); if( val != 0 ) { printf("Returned from a longjmp() with value = %s ", val); exit(0); } printf("Jump function call "); jmpfunction( env_buffer ); return(0); } void jmpfunction(jmp_buf env_buf) { longjmp(env_buf, "yiibaisyiibai.com"); }
让我们编译和运行上面的程序,这将产生以下结果:
Jump function call Returned from a longjmp() with value = yiibaisyiibai.com