0
嗨,我想问一下关于setjmp/longjmp。我试图寻找,但我unsucessuful ...两个独立的jmp_bufs如何工作?
#include <stdio.h>
#include <setjmp.h>
jmp_buf a, b;
void jump() {
int aa = setjmp(a);
if (aa)
{
printf("Jump!\n");
}
else
{
longjmp(b, 1);
printf("Should not happened...\n");
}
printf("End of function!\n");
}
int main(int argc, char** argv) {
int bb = setjmp(b);
if (bb)
{
longjmp(a, 1);
printf("Should not happened...\n");
}
else
{
jump();
printf("What here?\n");
}
printf("Exit\n");
return 0;
}
的问题是,最后的printf后会发生在跳跃()什么......我想这个代码,并将其变成无限循环。为什么?我虽然setjmp将存储环境数据,所以跳转功能应在原始调用后返回...我很安静困惑。感谢您的回复:)
谢谢。你知道一些有用的页面或文献,我可以找到关于C和堆栈的更多信息吗?也许我对它的想象与现实稍有不同:) – jirizaj