我是一名 C++ 程序员,习惯于具有良好异常处理能力的 OO 语言。
据我所知,setjmp 和 longjmp 本质上是传播异常条件的 C 风格方式。它们似乎也是一种可以向上传播堆栈的 goto 的强烈形式。
所以,首先:在这个时间点直接在 C 中使用它们是好的做法,还是它们已被弃用? (注意:C 不是 C++)。
其次,它们在 C++ 中有任何用处吗?或者我认为它们是被 C++ 的异常处理功能所取代的遗留机制是否正确?
最佳答案
从本质上讲,您断言 jmp
风格的传播与 goto
本质上是一样的,这是正确的。阅读Dijkstra's (famous and controversial) paper关于 goto
的(我认为)为为什么很少使用 goto
提供了合理的推理。除非你确切地知道你为什么要做你正在做的事情(或者你在非常特定的领域工作——比如嵌入式编程),否则你不应该接触 goto
或 longjmp
。
关于c - 在 C 中使用 setjmp 和 longjmp 是好的编程习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7262494/