函數(shù)名: longjump
頭文件:<setjmp.h>
用 法: void longjump(jmp_buf env, int val);
功 能: 執(zhí)行非局部轉移進程,使進程跳轉到setjmp處執(zhí)行
參 數(shù): jmp_buf env jmp_buf結構體,用于保存發(fā)生調用時的局部環(huán)境
int val 表示此時setjmp的返回值
返回值: 沒有返回值,它執(zhí)行后跳轉到保存jmper的setjmp函數(shù)的調用,并由setjmp函數(shù)返回val
程序例: longjmp函數(shù)進行非局部跳轉,執(zhí)行到longjmp時,程序跳轉到setjmp函數(shù)//中進行判斷,并輸出結果
#include<stdio.h> #include<setjmp.h> #include<stdlib.h> void subroutine(jmp_buf); int main(void){ int value; jmp_buf jumper; value = setjmp(jumper); if (value != 0) { printf("Longjmp with value %d\n", value); exit(value); } printf("About to call subroutine ... \n"); subroutine(jumper); return 0; } void subroutine(jmp_buf jumper) { longjmp(jumper,1); }
運行結果
About to call subroutine ... Longjmp with value 1
C語言網提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程