首先,这绝对是关于 C 的,不需要 C++ 解决方案。
目标:返回调用函数(A
)超出多个堆栈帧。
我有一些解决方案,但没有一个是最好的选择。
实现意义上最简单的一个是 longjmp/setjmp,但我不确定它是否会破坏自动变量,因为正如 wiki 所指,如果执行 longjmp,则不会参与正常的堆栈展开。
以下是程序流程的简短描述:A
函数调用file processing
函数,这会导致许多内部和递归调用。在某些时候,文件阅读器遇到了 EOF,所以工作
file processing
已经完成并且应该控制A
功能。
将每个读取的字符与 EOF 或 '\0' 进行比较?不,谢谢。UPD:我可以避免 setjmp 和 longjmp 之间的调用链中的动态分配。
不确定自动变量,我不知道顺序调用会发生什么file processing
(有多个文件)。
所以:
1) longjmp 的“无堆栈展开”怎么样?如果我得到所有可用的数据持有者(指针),那有多危险。
2) 其他简洁有效的返回A
框架的方法?