C語言setjmp頭文件(setjmp.h)中longjmp函數的用法及代碼示例。
用法:
void longjmp (jmp_buf env, int val);
跳遠
該函數永遠不會返回到已被調用的位置。相反,該函數將控件轉移到setjmp最後用於填充env,並將整個表達式計算為val(除非它為零,在這種情況下,它的評估值為
1
)。如果env之前的調用未填充setjmp或如果具有此類調用的函數已終止執行,則會導致未定義的行為。
在C++中,實現可以執行堆棧展開會自動破壞對象。如果這調用任何非平凡的破壞者,它導致未定義的行為。
參數
返回值
無(該函數永不返回)。示例
/* longjmp example */
#include <stdio.h> /* printf */
#include <setjmp.h> /* jmp_buf, setjmp, longjmp */
main()
{
jmp_buf env;
int val;
val=setjmp(env);
printf ("val is %d\n",val);
if (!val) longjmp(env, 1);
return 0;
}
輸出:
val is 0 val is 1 |
相關用法
注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C longjmp function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。