📜  C++ longjmp()和setjmp()

📅  最后修改于: 2020-09-25 08:11:07             🧑  作者: Mango

C++中的longjmp() 函数还原以前通过调用setjmp()保存的环境。

longjmp() 函数在头文件中定义。

longjmp()原型

void longjmp(jmp_buf env, int status);

要加载的环境存储在参数env中,该参数通过调用setjmp() 函数保存。

longjmp()参数

longjmp()返回值

示例:longjmp() 函数如何工作?

#include 
#include 
using namespace std;

int main()
{
    jmp_buf env;
    int val;
    
    val = setjmp(env);
    if (val==0)
    {
        cout << "setjmp returned " << val << endl;
        longjmp(env,val);
    }
    else
    {
        cout << "setjmp returned " << val << endl;
        cout << "Program terminating" << endl;
    }

    return 0;
}

运行该程序时,输出为:

setjmp returned 0
setjmp returned 1
Program terminating