中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

C 庫(kù)函數(shù) - longjmp()

C 標(biāo)準(zhǔn)庫(kù) - <setjmp.h> C 標(biāo)準(zhǔn)庫(kù) - <setjmp.h>

描述

C 庫(kù)函數(shù) void longjmp(jmp_buf environment, int value) 恢復(fù)最近一次調(diào)用 setjmp() 宏時(shí)保存的環(huán)境,jmp_buf 參數(shù)的設(shè)置是由之前調(diào)用 setjmp() 生成的。

聲明

下面是 longjmp() 函數(shù)的聲明。

void longjmp(jmp_buf environment, int value)

參數(shù)

  • environment -- 這是一個(gè)類(lèi)型為 jmp_buf 的對(duì)象,包含了調(diào)用 setjmp 時(shí)存儲(chǔ)的環(huán)境信息。
  • value -- 這是 setjmp 表達(dá)式要判斷的值。

返回值

該函數(shù)不返回任何值。

實(shí)例

下面的實(shí)例演示了 longjmp() 函數(shù)的用法。

#include <stdio.h>
#include <setjmp.h>

static jmp_buf buf;

void second(void) {
    printf("secondn");         // 打印
    longjmp(buf,1);             // 跳回setjmp的調(diào)用處 - 使得setjmp返回值為1
}

void first(void) {
    second();
    printf("firstn");          // 不可能執(zhí)行到此行
}

int main() {   
    if ( ! setjmp(buf) ) {
        first();                // 進(jìn)入此行前,setjmp返回0
    } else {                    // 當(dāng)longjmp跳轉(zhuǎn)回,setjmp返回1,因此進(jìn)入此行
        printf("mainn");       // 打印
    }

    return 0;
}

讓我們編譯并運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果:

second
main

C 標(biāo)準(zhǔn)庫(kù) - <setjmp.h> C 標(biāo)準(zhǔn)庫(kù) - <setjmp.h>

其他擴(kuò)展