C语言异常处理机制--setjmp的返回值
来源:互联网 发布:中国中等收入陷阱知乎 编辑:程序博客网 时间:2024/05/18 17:04
使用setjmp时必须使用头文件setjmp.h。
#include "setjmp.h"
jmp_buf jmpbuffer;
int setjmp(jmp_buf jmpbuffer);
void longjmp(jmp_buf jumpbuffer, int retval);
其中 jmpbuffer 是相关的程序栈的环境上下文。
初始化jmpbuffer之后, setjmp第一次调用的时候会返回 0。
longjmp跳转到setjmp处,其中第二个参数retval就是传递给setjmp, 作为setjmp的返回值。但是需要主要的是,如果retval设置为0, 即这样调用的时候 longjmp(jumpbuffer, 0), setjmp会返回1。
例子如下:
函数setjmp()的行为很特别,如果直接调用它,它便将所有与当前处理器相关的状态信息(比如指令指针的内容,栈指针等)保存到jmp_buf中并返回0。在这种情况下,它的表现与一个普通的函数一样。然而,如果使用同一个jmp_buf调用longjmp(),则函数返回时就好像刚从setjmp()中返回时一样-----又回到刚刚从setjmp()返回的地方。这一次,返回值是调用longjmp()时所使用的第二个参数,因此可通过这个值判断程序是从longjmp()返回的。
- C语言异常处理机制--setjmp的返回值
- 全面了解setjmp与longjmp(C语言异常处理机制)
- C语言异常处理机制, setjmp() and longjmp()
- C语言 控制转移 异常处理机制 setjmp & longjmp
- 全面了解setjmp与longjmp(C语言异常处理机制)
- C语言下的setjmp longjmp(C 语言异常处理)
- setjmp与longjmp实现c语言下的异常处理机制
- C语言中一种更优雅的异常处理机制 - setjmp/longjmp
- C语言利用setjmp/longjmp实现模仿C++的层次异常处理机制
- 详解C的异常处理机制(goto\setjmp longjmp)
- C异常处理机制:setjmp和longjmp
- C异常处理机制:setjmp和longjmp
- C异常处理机制:setjmp和longjmp
- C异常处理机制:setjmp和longjmp
- C语言实现异常机制setjmp() longjmp()
- C语言的异常处理——setjmp
- setJMP C结构化异常处理 与signals 机制
- c语言异常处理之longjmp 和 setjmp
- 浅析Java的“克隆”方法-转贴
- CStatic空间的鼠标事件响应,以及...
- Axialis IconWorkshop
- redhat linux 5下oracle10.2安装总结
- 怎么用IconWorkshop把ICO图标的阴影去掉? 弄成透明的背景呢?
- C语言异常处理机制--setjmp的返回值
- 最简单的SQL Server数据库存储过程分页
- c++学习笔记-------《c++自学通》第七章 深入了解类
- 在UpdatePanel下点击按钮下载文件没反应的解决方法之一
- C++中WriteFile和ReadFile使用
- 数据库优化--空间换时间优化
- 人人网使用的开源软件列表
- 纯CSS下拉菜单
- Marquee替代 -- 无间滚动