비지역적 점프
☞ setjmp, longjmp int setjmp(jmp_buf state); void longjmp(jmp_buf state, int value); C언어에서는 함수 내부를 지역(Local) 범위, 함수 외부를 전역(Global) 범위라고 합니다. 통상 return 구문을 통해서 하나의 지역 범위를 벗어 납니다. 함수 내부의 지역 범위에서도 for, do ~ while, while, switch 구문 내부를 더 세밀한 지역 범위라고 부를 수 있는데 이러한 지역 범위는 통상 break 구문을 통해서 벗어납니다. 문제는 이러한 함수 호출이 누적되거나 내부 지역 범위의 내포(Nested) 레벨이 깊어진 상태에서 특정한 시점으로 되돌아 가려면 정상적인 흐름으로는 break 내지 return 구문을 모두 거쳐..
C | C++
2018. 8. 4. 14:34