实现函数:
setjmp(jmp_buf jmp) 第一次成功返回0 ,第一次以后返回longjmp() 的val值
longjmp(jmp_buf jmp, int val )
#include<iostream>
#include<setjmp.h>
using namespace std;
jmp_buf jmp;
void jump2(int x);
void jump3(int x);
void jump1(int x)
{
cout<<"junmp...1"<<endl;
x = setjmp(jmp);
cout<<x <<" :junmp_back"<<endl;
if(x==0)
jump2(1);
}
void jump2(int x)
{
cout<<"junmp...2"<<endl;
if(x==2)
longjmp(jmp,2); // <=>sigsetjmp(jmp,3);
jump3(3);
}
void jump3(int x)
{
cout<<"junmp...3"<<endl;
if(x==3)
longjmp(jmp,3); // <=>sigsetjmp(jmp,3);
}
int main()
{
cout<<"=====jumpTest======"<<endl;
jump1(1);
return 1;
}
Linux函数之间的goto 跳转
最新推荐文章于 2023-12-12 23:01:29 发布