setjmp (1) 썸네일형 리스트형 Nonlocal jumps c에서 비지역성 점프라고 부른 사용자 수준의 예외적 제어 흐름의 형태를 제공하며, 이것은 보통의 콜-리턴 순서를 통할 필요 없이 하나의 함수에서 현재 실행하고 있는 다른 함수로 제어를 이동한다. 비지역성 점프는 setjmp와 longjmp함수로 제공한다. setjmp함수는 현재 호출하는 환경을 jmp_buf 타입의 버퍼에 저장해서 후에 longjmp가 사용되며 0을 리턴한다 호출하는 환경은 프로그램 카운터, 스택 포인터, 범용 레지스터를 포함한다. 책에서는 이런 식으로 설명해 주는데, 찾아보니 goto함수는 함수의 범위를 넘어서 이동할 수 없는 제약이 있다고 한다. jmp_buf는 아키텍처별 정보를 담는데 x86의 경우에는 레지스터 정보를 담기 위해 6 개의 정수로 이뤄진다. setjmp() 최초 호출시.. 이전 1 다음