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