小白教程
所有教程
关于
Search
172.69.58.95
172.69.58.95
参数设置
贡献
退出
操作
编辑
移动
保护
信息
历史
删除
查看“C function longjmp”的源代码
本页内容
上一节:
C_macro_setjmp
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:void longjmp(jmp_buf environment, int value)}}[[Category:c standard library setjmp h|2]] = C 库函数 - longjmp() = [[c standard library setjmp h|C 标准库 - <setjmp.h>]] == 描述 == C 库函数 '''void longjmp(jmp_buf environment, int value)''' 恢复最近一次调用 '''setjmp()''' 宏时保存的环境,'''jmp_buf''' 参数的设置是由之前调用 setjmp() 生成的。 == 声明 == 下面是 longjmp() 函数的声明。 <pre> void longjmp(jmp_buf environment, int value) </pre> == 参数 == * '''environment''' -- 这是一个类型为 '''jmp_buf''' 的对象,包含了调用 setjmp 时存储的环境信息。 * '''value''' -- 这是 '''setjmp''' 表达式要判断的值。 == 返回值 == 该函数不返回任何值。 下面的实例演示了 longjmp() 函数的用法。 <pre> #include <stdio.h> #include <setjmp.h> static jmp_buf buf; void second(void) { printf("second\n"); // 打印 longjmp(buf,1); // 跳回setjmp的调用处 - 使得setjmp返回值为1 } void first(void) { second(); printf("first\n"); // 不可能执行到此行 } int main() { if ( ! setjmp(buf) ) { first(); // 进入此行前,setjmp返回0 } else { // 当longjmp跳转回,setjmp返回1,因此进入此行 printf("main\n"); // 打印 } return 0; } </pre> 让我们编译并运行上面的程序,这将产生以下结果: <pre> second main </pre> [[c standard library setjmp h|C 标准库 - <setjmp.h>]]
返回至“
C function longjmp
”。
上一节:
C_macro_setjmp