#include <stdio.h>
#include <setjmp.h>
jmp_buf env;
void banana(void)
{
printf("in banana\n");
// 表示回到env所记录的位置,此时setjmp返回i(i=2)
// 并且调用完成之后env内容被销毁
// 下边的打印不会被执行到
longjmp(env, 2);
printf("out banana\n");
}
int main(void)
{
int r;
// 使用全局变量env记录现在的位置,函数返回0
r = setjmp(env);
if (0 == r)
{
printf("first through\n");
banana();
}
else if (2 == r)
{
printf("back in main\n");
}
return 0;
}
setjmp&longjmp
最新推荐文章于 2024-01-02 21:43:50 发布