亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

setjmp 和 longjmp

2024-05-31 05:34:10
3
0

在c語言中,我們可以使用setjmplongjmp這兩個函數實現函數間的直接跳轉。

函數原型

其中函數原型如下:

#include <setjmp.h>
int setjmp(jmp_buf env);
void longjmp(jmp_buf env, int val);

其中setjmp 函數的功能是將函數在此處的上下文保存在 jmp_buf 結構體中,以供 longjmp 從此結構體中恢復。

  • 參數 env 即為保存上下文的 jmp_buf 結構體變量;
  • 如果直接調用該函數,返回值為 0; 若該函數從 longjmp 調用返回,返回值為非零,由 longjmp 函數提供。根據函數的返回值,我們就可以知道 setjmp 函數調用是第一次直接調用,還是由其它地方跳轉過來的。

longjmp 函數的功能是從 jmp_buf 結構體中恢復由 setjmp 函數保存的上下文,該函數不返回,而是從 setjmp 函數中返回。

  • 參數 env 是由 setjmp 函數保存過的上下文。
  • 參數 val 表示從 longjmp 函數傳遞給 setjmp 函數的返回值,如果 val 值為0, setjmp 將會返回1,否則返回 val。
    longjmp 不直接返回,而是從 setjmp 函數中返回,longjmp 執行完之后,程序就像剛從 setjmp 函數返回一樣。

例子

#include <setjmp.h>
#include <stdlib.h>
#include <stdio.h>
int main() {
    jmp_buf env;
    int i;
    i = setjmp(env);
    printf("i = %d\n", i);
    if(i != 0) exit(0);
    longjmp(env, 2);
    printf("this line does not get print");
    return 0;
}

輸出為下:

i = 0
i = 2
0條評論
0 / 1000
c****z
2文章數
0粉絲數
c****z
2 文章 | 0 粉絲
c****z
2文章數
0粉絲數
c****z
2 文章 | 0 粉絲
原創

setjmp 和 longjmp

2024-05-31 05:34:10
3
0

在c語言中,我們可以使用setjmplongjmp這兩個函數實現函數間的直接跳轉。

函數原型

其中函數原型如下:

#include <setjmp.h>
int setjmp(jmp_buf env);
void longjmp(jmp_buf env, int val);

其中setjmp 函數的功能是將函數在此處的上下文保存在 jmp_buf 結構體中,以供 longjmp 從此結構體中恢復。

  • 參數 env 即為保存上下文的 jmp_buf 結構體變量;
  • 如果直接調用該函數,返回值為 0; 若該函數從 longjmp 調用返回,返回值為非零,由 longjmp 函數提供。根據函數的返回值,我們就可以知道 setjmp 函數調用是第一次直接調用,還是由其它地方跳轉過來的。

longjmp 函數的功能是從 jmp_buf 結構體中恢復由 setjmp 函數保存的上下文,該函數不返回,而是從 setjmp 函數中返回。

  • 參數 env 是由 setjmp 函數保存過的上下文。
  • 參數 val 表示從 longjmp 函數傳遞給 setjmp 函數的返回值,如果 val 值為0, setjmp 將會返回1,否則返回 val。
    longjmp 不直接返回,而是從 setjmp 函數中返回,longjmp 執行完之后,程序就像剛從 setjmp 函數返回一樣。

例子

#include <setjmp.h>
#include <stdlib.h>
#include <stdio.h>
int main() {
    jmp_buf env;
    int i;
    i = setjmp(env);
    printf("i = %d\n", i);
    if(i != 0) exit(0);
    longjmp(env, 2);
    printf("this line does not get print");
    return 0;
}

輸出為下:

i = 0
i = 2
文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0