setjmp和longjmp goto应用

来源:互联网 发布:二级c语言考试系统 编辑:程序博客网 时间:2024/06/05 06:07

setjmp(jmp_buf j):使用变量j 记录现在的位置,函数返回0;

longjmp(jmp_buf j,int i):回到j 所记录的位置,让他看上去和原先的setjmp(jmp_buf j)函数返回的一样,但longjmp(xxx),函数返回的是i;(不过一般不用返回值,测试后返现返回值赋值提示错误)


goto:只能在当前函数内部跳转,

setjmp和longjmp可以长距离跳转,不仅仅局限于函数内部!

#include <map>

#include <string>
#include <iostream>
#include <time.h>
#include <Windows.h>
#include <setjmp.h>
using namespace std;


int main()
{
jmp_buf j_buf;
int i = 0;
setjmp(j_buf);
for (;i < 10;)
{
printf("input data :%d\n",i);
if(i >9)
return -1;
i++;
longjmp(j_buf,i);
}


getchar();
}
0 0
原创粉丝点击