C語言setjmp頭文件(setjmp.h)中setjmp宏的用法及代碼示例。
用法:
int setjmp (jmp_buf env);
節省調用環境以實現跳遠
呼喚longjmp信息存儲在env恢複相同的狀態,並將控件返回到同一點(對setjmp),該值被評估為特定的非零值。
調用環境的狀態包括所有可訪問對象的值,但函數本地自動持續時間的值除外,這些值沒有
volatile
限定的類型,並且在調用之前會發生變化longjmp;這些具有不確定的值。的調用setjmp應該單獨是一個表達式語句,或者在選擇或迭代語句中作為(可能取反的)整個控製表達式進行評估,或者與整數常量表達式進行比較。否則,會導致未定義的行為。
參數
- env
- 類型的對象jmp_buf存儲環境信息的位置。
返回值
該宏可能返回不止一次:第一次,直接調用它;在這種情況下,它始終返回零。什麽時候longjmp調用時將信息設置為env,宏再次返回;這次它返回傳遞給的值longjmp如果它不為零,則作為第二個參數,或者
1
如果為零。示例
/* setjmp example: error handling */
#include <stdio.h> /* printf, scanf */
#include <stdlib.h> /* exit */
#include <setjmp.h> /* jmp_buf, setjmp, longjmp */
main()
{
jmp_buf env;
int val;
val = setjmp (env);
if (val) {
fprintf (stderr,"Error %d happened",val);
exit (val);
}
/* code here */
longjmp (env,101); /* signaling an error */
return 0;
}
函數用途setjmp設置一個catch-point,以後可以由它調用longjmp表示錯誤。
輸出:
Error 101 happened |
相關用法
注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C setjmp function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。