setjmp fmod longjmp C 库宏 - setjmp() 描述 C 库宏 int setjmp(jmp_buf environment)把当前环境保存在变量 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; /* 保存 longjmp 的调用环境 */ val = setjmp( env_buffer ); if( val != 0 ) { printf("从 longjmp() 返回值 = %s\n", val); exit(0); } printf("跳转函数调用\n"); jmpfunction( env_buffer ); return(0); } void jmpfunction(jmp_buf env_buf) { longjmp(env_buf, "2xkt.com"); } 让我们编译并运行上面的程序,这将产生以下结果: 跳转函数调用 从 longjmp() 返回值 = 2xkt.com fmod longjmp