gpt4 book ai didi

c - 使用 setjmp 和 longjmp

转载 作者:行者123 更新时间:2023-12-02 18:08:40 24 4
gpt4 key购买 nike

有这么简单的C代码

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

void Com_Error(int);

jmp_buf abortframe;

int main() {

if (setjmp (abortframe)){
printf("abortframe!\n");
return 0;
}

Com_Error(0);

printf("main end\n");
return 0;
}

void Com_Error(int code) {
// ...
longjmp (abortframe, code);
//...
}

我得到:

abortframe!

我的问题是,如果我们传递 0 (不是 true),为什么它会打印 abortframe! ,因此条件 if (setjmp (abortframe)){...} 不应满足,因此不会打印 abortframe! 字符串?

最佳答案

阅读友好手册(C17 7.13.2.1):

The longjmp function cannot cause the setjmp macro to return the value 0; if val is 0, the setjmp macro returns the value 1.

关于c - 使用 setjmp 和 longjmp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72799701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com