int setjmp(jmp
优质
小牛编辑
129浏览
2023-12-01
描述 (Description)
C库宏int setjmp(jmp_buf environment)将当前environment保存到变量环境中供以后使用函数longjmp() 。 如果此宏直接从宏调用返回,则返回零但如果从longjmp()函数调用返回,则返回传递给longjmp的值作为第二个参数。
声明 (Declaration)
以下是setjmp()宏的声明。
int setjmp(jmp_buf environment)
参数 (Parameters)
environment - 这是存储环境信息的jmp_buf类型的对象。
返回值 (Return Value)
此宏可能会返回多次。 第一次,在直接调用时,它总是返回零。 当使用设置到环境的信息调用longjmp时,宏再次返回; 现在它返回传递给longjmp的值作为第二个参数。
例子 (Example)
以下示例显示了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\n", val);
exit(0);
}
printf("Jump function call\n");
jmpfunction( env_buffer );
return(0);
}
void jmpfunction(jmp_buf env_buf) {
longjmp(env_buf, "iowiki.com");
}
让我们编译并运行上面的程序,这将产生以下结果 -
Jump function call
Returned from a longjmp() with value = iowiki.com