c语言怎么从子函数的子函数直接返回主函数

如题所述

C++可以通过异常处理的throw和catch来实现从子函数的子函数直接返回主函数,汇编语言可以用jmp指令跳转实现这个需求。

C语言主要靠函数调用和return在函数之间切换,很难做到在多层调用中直接返回主函数。虽然goto语句可以无条件跳转,但是必须在同一个函数中使用。
因此解决的方法也是用一个特殊的值作为需要返回的标志,然后在两层调用函数中都遇到该值就返回,但是这个方法也有两个前提:
1)你的两个子函数都是由返回值的函数
2)你选择的特殊值和函数正常的返回的取值不会冲突,不会引起二义性。

因此建议你的这个问题还是用C++ 的异常去解决比较好。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-15
1 汇编清空子函数分配的存储空间,这个不在C范围内了。也可以无视。
2 汇编跳转到主函数地址 ,汇编级的调试跳转过,代码的话很复杂。不考虑安全、存储空间等问题并且最后退出是直接退出而非按步返回,直接调用主函数即可。
函数跳转是编译器的事,你想按自己的方式跳转就要做相应的本该由编译器做的事 。否则不可以。
第2个回答  2019-01-02
c++可以通过异常处理的throw和catch来实现从子函数的子函数直接返回主函数,汇编语言可以用jmp指令跳转实现这个需求。
c语言主要靠函数调用和return在函数之间切换,很难做到在多层调用中直接返回主函数。虽然goto语句可以无条件跳转
第3个回答  推荐于2017-12-15
是要跳出这两个函数还是把值传回去函数继续。
如果跳出两个函数里都return;就行,需要把值传到main里运行main再继续的话,应该把main函数里用到的代码构造成一个函数,然后可以直接传值、构造个全局变量或指针都行。本回答被提问者采纳
第4个回答  2013-07-15
goto可以做这个事情,建议不要用。你可以让子函数执行结束,结束之后自然会回到主函数中追问

是从子函数的子函数直接回

追答

现在编程方式for,while,if等几乎可以满足所有的编程需求,所以很多人和书都建议不要使用goto。你应该先看看自己的程序设计上是否有问题,return可以结束函数跳回上一级函数