setjmp的使用 -循环求1~100的和

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

//循环求和
void func(int i, int* p)
{
    *p += i;
}


void main()
{
    int i= 0, sum = 0, flag;
    int *p;
    p = &sum;
    jmp_buf env;

    //当第一次调用setjmp(),它的返回值为零。之后调用longjmp(),longjmp()的第二个参数即为setjmp()的返回值。
    flag = setjmp(env);
    if (i <= 100)
    {
        func(i, &sum);
        i++;
        longjmp(env, 2);// longjmp( jmp_buf envbuf, int status ); status不能设定为零。
    }

    printf("sum = %d\n", sum);

    system("pause");
}

你可能感兴趣的:(setjmp的使用 -循环求1~100的和)