C庫函式void longjmp(jmp_buf environment, int value)到jmp_buf環境,恢復由最近一次呼叫對setjmp()巨集在同一程式與correspondingjmp_buf引數呼叫儲存的環境。
以下是longjmp()函式的宣告。
void longjmp(jmp_buf environment, int value)
environment -- 這是到jmp_buf型別的物件包含了setjmp的呼叫點恢復環境資訊。
value -- 這是包括setjmp表示式計算的值。
這個函式不返回任何值。
下面的例子演示了如何使用longjmp()函式。
#include <stdio.h> #include <stdlib.h> #include <setjmp.h> int main() { int val; jmp_buf env_buffer; /* save calling environment for longjmp */ val = setjmp( env_buffer ); if( val != 0 ) { printf("Returned from a longjmp() with value = %s ", val); exit(0); } printf("Jump function call "); jmpfunction( env_buffer ); return(0); } void jmpfunction(jmp_buf env_buf) { longjmp(env_buf, "yiibaistw511.com"); }
讓我們編譯和執行上面的程式,這將產生以下結果:
Jump function call Returned from a longjmp() with value = yiibaistw511.com