#pragma once
#include <iostream>
#include <csetjmp>
using namespace std;
class rain_bow{
public:
rain_bow() { cout << " rain_bow()" << endl;}
~rain_bow() { cout <<"~rain_bow()" << endl;}
};
jmp_buf kansas;
int value = 0;
void oz1(){
rain_bow rb;
value = 2;
for(int i = 0; i < 3; ++i){
cout << " there is no place link home"<<std::endl;
}
longjmp(kansas, 47);
}
void oz2(){
longjmp(kansas, 1);
}
void test_jmp(){
if(setjmp(kansas)==0){
value = 1;
cout<<"[==> if]"<<endl;
cout<<"1. setjmp - value: " << value << endl;
cout<<"tornado, witch, munchkins..."<<endl;
oz1();//return back to the postion before setjmp(kansas)==0
}else{
//will come here after executoing oz()
cout <<"[==> else 1]" <<endl;
cout<<"2. longjmp - value : " << value << endl;
cout<<" Auntie Em! "
<< "I had the strangest dream..."
<< endl;
}
}
/*output:
[==> if]
1. setjmp - value: 1
tornado, witch, munchkins...
rain_bow()
there is no place link home
there is no place link home
there is no place link home
~rain_bow()
2. longjmp - value : 2
[==> else] Auntie Em! I had the strangest dream...
请按任意键继续. . .
*/
setjmp用法
最新推荐文章于 2018-11-08 21:23:00 发布