#include <stdio.h>
#include <cstdlib>
#include <csetjmp>
jmp_buf buf;
int b = 1;
void bar();
void foo() {
if (b)
bar();
}
void bar() {
if (b) {
printf("bar");
longjmp(buf, 1);
}
}
int main(int argc, char **argv) {
int err = setjmp(buf);
printf("%d\n",err);
if (err == 0)
foo();
else
exit(0);
}
setjmp会保存当前的环境,当调用longjmp后,程序会跳转到setjmp的位置,并返回longjmp中的参数
setjmp longjmp
最新推荐文章于 2024-01-02 21:43:50 发布