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

[复制链接]
查看11 | 回复5 | 2016-8-9 04:30:12 | 显示全部楼层 |阅读模式
C++可以通过异常处理的throw和catch来实现从子函数的子函数直接返回主函数,汇编语言可以用jmp指令跳转实现这个需求。C语言主要靠函数调用和return在函数之间切换,很难做到在多层调用中直接返回主函数。虽然goto语句可以无条件跳转,但是必须在同一个函数中使用。因此解决的方法也是用一个特殊的值作为需要返回的标志,然后在两层调用函数中都遇到该值就返回,但是这个方法也有两个前提:1)你的两个子函数都是由返回值的函数2)你选择的特殊值和函数正常的返回的取值不会冲突,不会引起二义性。因此建议你的这个问题还是用C++ 的异常去解决比较好。...
回复

使用道具 举报

千问 | 2016-8-9 04:30:12 | 显示全部楼层
1 汇编清空子函数分配的存储空间,这个不在C范围内了。也可以无视。2 汇编跳转到主函数地址 ,汇编级的调试跳转过,代码的话很复杂。不考虑安全、存储空间等问题并且最后退出是直接退出而非按步返回,直接调用主函数即可。函数跳转是编译器的事,你想按自己的方式跳转就要做相应的本该由编译器做的事 。否则不可以。...
回复

使用道具 举报

千问 | 2016-8-9 04:30:12 | 显示全部楼层
c++可以通过异常处理的throw和catch来实现从子函数的子函数直接返回主函数,汇编语言可以用jmp指令跳转实现这个需求。c语言主要靠函数调用和return在函数之间切换,很难做到在多层调用中直接返回主函数。虽然goto语句可以无条件跳转...
回复

使用道具 举报

千问 | 2016-8-9 04:30:12 | 显示全部楼层
是要跳出这两个函数还是把值传回去函数继续。如果跳出两个函数里都return;就行,需要把值传到main里运行main再继续的话,应该把main函数里用到的代码构造成一个函数,然后可以直接传值、构造个全局变量或指针都行。...
回复

使用道具 举报

千问 | 2016-8-9 04:30:12 | 显示全部楼层
goto可以做这个事情,建议不要用。你可以让子函数执行结束,结束之后自然会回到主函数中...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行