【发布时间】:2016-01-15 04:00:31
【问题描述】:
我在 func.c 文件中有一个函数 f(),在另一个文件 funcs.h 中有函数 f1()、f2()、f3()、f4()。 (假设所有函数都接收/返回值而不失一般性)。
- 函数 f( ) 调用 f4( )
- f4( ) 在它们之间以任意顺序调用 f1( )、f2( )、f3( )
- 在执行期间的某个时间点,f3() 检测到算法的完成,它必须“终止”算法的执行。在独立的情况下,它应该在打印解决方案后退出程序。但是在这里,我需要 f3( ) return 到 f()。
这是我的解决方案:
在这种情况下,我不能简单地返回 f4()(原来 f() 调用的函数,因为已经有 f1()、f2()、f3()、f4() 的函数调用堆栈,等待被“弹出”)。所以,我所做的是:
- 在调用 f4() 之前,我在 f() 中做了一个 setjmp( )
- 然后,当我检测到算法完成时,我在 f3( ) 中执行了longjmp( )
我的问题是:在这种情况下,这是实现这一目标的正确方法吗?
【问题讨论】:
-
我已将其转换为 Wiki,因为这将涉及讨论,没有确定的答案。感谢您的所有意见。
标签: c