C 庫函數 - longjmp()
描述
C 庫函數 void longjmp(jmp_buf environment, int value) 恢復最近一次調用 setjmp() 宏時保存的環境,jmp_buf 參數的設置是由之前調用 setjmp() 生成的。
聲明
下麵是 longjmp() 函數的聲明。
void longjmp(jmp_buf environment, int value)
參數
- environment -- 這是一個類型為 jmp_buf 的對象,包含了調用 setjmp 時存儲的環境資訊。
- value -- 這是 setjmp 運算式要判斷的值。
返回值
該函數不返回任何值。
實例
下麵的實例演示了 longjmp() 函數的用法。
#include <stdio.h> #include <setjmp.h> static jmp_buf buf; void second(void) { printf("second\n"); // 列印 longjmp(buf,1); // 跳回setjmp的調用處 - 使得setjmp返回值為1 } void first(void) { second(); printf("first\n"); // 不可能執行到此行 } int main() { if ( ! setjmp(buf) ) { first(); // 進入此行前,setjmp返回0 } else { // 當longjmp跳轉回,setjmp返回1,因此進入此行 printf("main\n"); // 列印 } return 0; }
讓我們編譯並運行上面的程式,這將產生以下結果:
second main