다음을 통해 공유


setjmp

프로그램의 현재 상태를 저장합니다.

구문

int setjmp(
   jmp_buf env
);

매개 변수

env
환경이 저장되는 변수입니다.

반환 값

스택 환경에 저장한 후 0을 반환합니다. 호출로 longjmp 인해 반환되는 경우 setjmp 인수를 value longjmp반환하거나 인수가 value longjmp 0 setjmp 이면 1을 반환합니다. 오류 반환이 없습니다.

설명

setjmp 함수는 longjmp를 사용하여 나중에 복원할 수 있는 스택 환경을 저장합니다. setjmplongjmp를 함께 사용하면 비로컬 goto를 실행할 수 있습니다. 일반적으로 일반적인 호출 또는 반환 규칙을 사용하지 않고 이전에 호출된 루틴에서 오류 처리 또는 복구 코드 실행 제어를 전달하는 데 사용됩니다.

setjmp에 대한 호출은 현재 스택 환경을 env에 저장합니다. longjmp에 대한 후속 호출은 저장된 환경을 복원하고 컨트롤을 해당 setjmp 호출 바로 다음에 오는 포인터로 반환합니다. 컨트롤을 받는 루틴에 액세스할 수 있는 모든 변수(레지스터 변수 제외)는 longjmp가 호출될 때 가지고 있던 값을 포함합니다.

네이티브 코드에서 관리 코드로 이동하는 데 사용할 setjmp 수 없습니다.

Microsoft 전용

Windows longjmp 의 Microsoft C++ 코드에서 예외 처리 코드와 동일한 스택 해제 의미 체계를 사용합니다. C++ 예외가 발생할 수 있는 동일한 위치에서 사용하는 것이 안전합니다. 그러나 이 사용법은 이식 가능하지 않으며 몇 가지 중요한 주의 사항이 함께 제공됩니다. 자세한 내용은 longjmp를 참조하십시오.

Microsoft 전용 종료

참고 항목

이식 가능한 C++ 코드에서는 C++ 개체 의미 체계를 가정 setjmp 하고 longjmp 지원할 수 없습니다. 특히 setjmp/longjmp 호출 쌍은 자동 개체를 setjmp 대체하고 longjmp 모든 자동 개체에 catch throw 대해 사소한 소멸자를 호출하는 경우 정의되지 않은 동작을 가합니다. C++ 프로그램에서는 C++ 예외 처리 메커니즘을 사용하는 것이 좋습니다.

자세한 내용은 사용 setjmplongjmp를 참조하세요.

요구 사항

루틴에서 반환된 값 필수 헤더
setjmp <setjmp.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

예시

_fpreset에 대한 예를 참조하세요.

참고 항목

프로세스 및 환경 제어
longjmp