Следующий код только заканчивает печать «5»Почему программа setjmp печатает 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, а не как функция ... Не волнуйся, я не используя этот код в любом месте, мне просто интересно!
Примечание: использование setjmp/longjmp в C++ просто неверно. У нас есть бросок и улов. –
Согласен, мне просто любопытно, как сильно они заворачивают вещи вверх – foips
@foips Они (почти всегда) вызывают неопределенное поведение, которое так же прикручено, как вы можете получить. –