Chinaunix首页 | 论坛 | 博客

分类: 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() 就会产生不可估计的错误。

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