longjmp函數(shù) longjmp和siglongjmp的區(qū)別?
longjmp和siglongjmp的區(qū)別?Goto語句實(shí)現(xiàn)程序執(zhí)行的本地跳轉(zhuǎn),longjmp()和setjmp()函數(shù)實(shí)現(xiàn)程序執(zhí)行的遠(yuǎn)程跳轉(zhuǎn)。一般來說,應(yīng)該避免任何形式的執(zhí)行跳轉(zhuǎn),因?yàn)樵诔绦蛑惺褂胓
longjmp和siglongjmp的區(qū)別?
Goto語句實(shí)現(xiàn)程序執(zhí)行的本地跳轉(zhuǎn),longjmp()和setjmp()函數(shù)實(shí)現(xiàn)程序執(zhí)行的遠(yuǎn)程跳轉(zhuǎn)。一般來說,應(yīng)該避免任何形式的執(zhí)行跳轉(zhuǎn),因?yàn)樵诔绦蛑惺褂胓oto語句或longjmp()函數(shù)不是一個(gè)好的編程習(xí)慣。goto語句跳過程序中的一段代碼并轉(zhuǎn)到預(yù)先指定的位置。為了使用goto語句,您需要預(yù)先指定一個(gè)帶標(biāo)簽的位置作為跳轉(zhuǎn)位置,它必須與goto語句具有相同的功能。不同功能之間無法實(shí)現(xiàn)跳轉(zhuǎn)。
setjmp與longjmp的使用是怎樣的?
Setjmp無法跳轉(zhuǎn)。它只能用于保存當(dāng)前執(zhí)行的堆棧信息以供以后使用。真正的跳躍是longjmp。Longjmp應(yīng)與setjmp一起使用。Longjmp可以跳到執(zhí)行setjmp的地方。