[英]Creating a loop using setJmp longJmp
我正在嘗試使用這些函數創建一個無限循環(未成功)。
我的代碼:
jmp_buf buf1;
void foo(){
int z = 4, y = 1;
int v = setjmp(buf1);
if(v == 0){
printf("A%d", z);
longJmp(buf1, 1);
}
else if(v == 1){
printf("B%d", y);
longjmp(buf1,1);
}
}
int main(){
int v = setjmp(buf1);
if( v == 0){
printf("C%d", 1);
foo();
longjump(buf1,1);
}
}
我以為它會打印 C1A4B1B1B1....(B1 永遠重復)但我只是得到 C1A4B1 並且程序停止(SEGMENTATION ERROR)。 調用 longJmp 不是總是返回帶有參數 val 的 setJmp 嗎?
想了解我的錯誤在哪里。
編輯:我在得到答案之前復制的代碼是錯誤的,longjmp(buf1,2) 而不是 longjmp(buf1,1)。 此外,我沒有復制導致段錯誤的完整主要代碼。 (調用 foo 后的另一個 longjmp)
在第 15 行之后, longjmp(buf1,2);
v 為 2。
下次重復時,v不為1,function結束。
longjmp(buf1,2);
> longjmp(buf1,1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.