[C] ๋กฑ์ ํ
C ํ์ค์๋ setjmp๋ผ๋ ๊ธฐ๊ดดํ ํค๋๊ฐ ์๋ค.
์ด๊ฑด ํจ์๋ฅผ ๋๋๋๋ goto๋ฅผ ์ ๊ณตํ๋ค.
jmp_buf๋ผ๋ ๋ณ์์ setjmp๋ก ๋ ์ด๋ธ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ฉด, longjmp ํจ์๋ก ์ด๋ํ ์ ์๋ค.
๋๋ฌธ์ ์๋์ ๊ฐ์ ์ฝ๋๋ goto๋ ๋ฐ๋ณต๋ฌธ๋ ์์ง๋ง ๋ฌดํ๋ฃจํ๋ฅผ ๋ฐ์์ํจ๋ค.


๋ค๋ฅธ ์ค๋ ๋ ๊ฐ์๋ ์ ํ๋ฅผ ์๋ํ ์ ์์ง๋ง ๊ฒฐ๊ณผ๋ UB๋ผ๊ณ ํ๋ค.(C11) ๊ทผ๋ฐ ๋ญ ์ค๋ ๋๋ ๊ตฌํ์ด ์๋ ์ํ๋ผ์.
์ฌํผ ์ด๋ฐ ํ๊ฒฉ์ ์ธ ํ์ฌ์ ๊ฑธ๋ง๊ฒ, ๋ง์ ๋จ์ ์ด ์กด์ฌํ๋ค.
longjmp๊ฐ์ ๊ฒฝ์ฐ์ ์ค์ฝํ๋ฅผ ์ด์ํด์ ๊ฑด๋๋ฐ๊ธฐ ๋๋ฌธ์, ๋ฌ๊ธ์์ด ์๋๋ณ์์๋ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ ์ ์๋ค. ํนํ ๊ฐ๋ณ๊ธธ์ด๋ฐฐ์ด์ด ๊ทธ๋ ๋ค.
๊ทธ๋๋ try-catch๋ ์ฝ๋ฃจํด ๋ฑ์ ๊ตฌํํ๊ธฐ์ ๊ด์ฐฎ์๋ณด์ธ๋ค.