메뉴 건너뛰기

NEOS 예제 코드

setjmp() / longjmp() 함수 사용 예제

관리자1 2017.01.11 13:34 조회 수 : 694

다음은 setjmp() / longjmp() 함수를 활용한 예제입니다.

 

longjmp()가 실행되면 이전 설정해 둔 setjmp()로 비로컬(함수 밖) 이동을 보여주는 예제입니다.

 -->> 실행 결과 : count = 10, flag = 1 (TRUE)

 

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


static int count;
static jmp_buf a;

static void jumpFunc(void);


void setjmpExample(void)
{
    int flag = FALSE;
    int result = 0;

    count = 1;

    result = setjmp(a);


    if (result == 2)
    {
        flag = TRUE;
    }

    if (flag != TRUE)
    {
        jumpFunc();
    }

    printf("count = %d, flag = %d\n", count, flag);
}

static void jumpFunc(void)
{
    count++;

    if(count < 10)
    {
        longjmp(a, 1);
    }
    else
    {
        longjmp(a, 2);
    }
}
위로