【发布时间】:2013-11-29 16:15:37
【问题描述】:
下面的代码只是打印“5”
#include <iostream>
#include <setjmp.h>
static jmp_buf buf;
float funcB()
{
setjmp(buf);
return 1.6f;
}
int funcA()
{
longjmp(buf,5);
std::cout<<"b";
return 2;
}
int main()
{
funcB();
std::cout<<funcA();
}
但这没有任何意义,因为 setjmp 返回 5,而不是任何一个函数...... 别担心,我没有在任何地方使用此代码,我只是好奇!
【问题讨论】:
-
注意:在 C++ 中使用 setjmp/longjmp 是错误的。我们在这里有投掷和接球。
-
同意,我只是好奇他们会搞砸多少
-
@foips 它们(几乎总是)导致未定义的行为,这几乎是你所能得到的。