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();
}
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();
}
相关文章推荐
- 1.2 reverse a C-Style String
- 解決google在scroll裡左右拖動的問題
- GoogleCodeJam2015第二轮
- Go的pprof使用
- Golang Channel用法简编
- 一个有关Golang变量作用域的坑
- Goroutine是如何工作的
- Go语言是如何处理栈的
- django中url,静态文件,POST请求的配置
- django中url,静态文件,POST请求的配置
- Go语言学习笔记(一) : 搭建Windows下的Go开发环境
- mode_t 内核文件权限值 S_IRUGO=S_IRUSR | S_IRGRP | S_IROTH
- WordPress-当文章属于两个或多个分类时,使其在不同的分类使用不同文章模板的方法
- 探寻Google Photos无限免费的“真相”
- AMD Launches The A10-7870K "Godavari" APU
- 10618 - Tango Tango Insurrection
- HackerRank - "Algorithmic Crush"
- POJ2262 Goldbach's Conjecture(素数问题)
- hdu1847 Good Luck in CET-4 Everybody!(博弈论)