我知道人们总是说不要使用longjmp
,它很邪恶,很危险。
但我认为它可以用于退出深层递归/嵌套函数调用。
单个longjmp
是否比重复的检查和返回(如if(returnVal != SUCCESS) return returnVal;
)更快?
至于安全性,只要动态内存和其他资源被正确释放,就不应该有问题,对吧?
到目前为止,使用longjmp
似乎并不困难,而且它甚至使我的代码更简洁。我很想多次使用它。
(在许多情况下,在深度递归中根本没有分配动态内存/资源。 深层函数调用似乎更常见于数据解析/操作/验证。 动态分配通常发生在高级别之前,在出现setjmp
的函数调用之前。)