您的位置:首页 > 编程语言 > Go语言

setjmp和longjmp goto应用

2015-06-01 19:28 423 查看
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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: