Chinaunix首页 | 论坛 | 博客
  • 博客访问: 373089
  • 博文数量: 55
  • 博客积分: 1033
  • 博客等级: 少尉
  • 技术积分: 603
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-21 13:36
文章存档

2013年(4)

2012年(51)

分类: C/C++

2012-08-29 18:10:34

Setjmp ()longjmp ()


setjmp () 被调用一次,却有多个返回值,但是longjmp () 被调用多次。


Setjmp (jmp_buf j) 首先被调用,记录变量j 的现在位置。函数返回值0

Longjmp (jmp_buf j,int i) 回到j 的位置,但是却返回 i 的值。并且在使用longjmp () 时,j 的值被摧毁。


Longjmp () goto 语句不同。

Goto 只能在函数里面跳转。

但是longjmp () 可以非本地跳转。但是却只能跳转到自己去过的地方,就是setjmp() 所记录的位置。


如果函数退出,setjmp () 的调用信息存放在jmp_buf env 中,如果此时,调用longjmp ()在恢复时就不在是程序点了,调用longjmp() 就会产生不可估计的错误。

阅读(1497) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~