goto介绍

  • 利用了goto和if语句来实现了循环功能,它与while实现的循环功能一样
int day = 1;
loop: 
if (day <= 31)
{
    printf("%d\n", day);
    day++;
    goto loop;
}

setjmp,longjmp介绍

#include <setjmp.h>

env 必须是一个全局的变量。setjmp 和 longjmp 的第一个参数都是它。
int setjmp(jmp_buf env);   // 第一次调用 setjmp 返回0 。
void longjmp(jmp_buf env, int val);

调用 longjmp 后,将再次调用 setjmp ,此时 setjmp 返回 val ,也就是 longjmp 的第二个参数。

不管 longjmp 在哪里,只要用设置好的 env 调用,就能马上跳到 setjmp 了。