首页 > 解决方案 > C++ 中有没有办法实现适用于多级函数调用的协程?

问题描述

我希望在 C++ 中实现一种方法,以便能够在函数中途停止函数内的执行并返回一些函数调用。例如,我可能有一个函数 F,并且我希望此代码一直返回到 F,而不必在 F 中包含任何特殊代码或函数 F 调用,而不是执行此返回的函数。然后,我希望能够在某个时候执行一段代码,恢复原始位置内的所有执行。我想这可以通过堆栈操作来完成,但我不知道是否有更简单的方法来做到这一点。

标签: c++

解决方案


鉴于我们正在处理 DLL,可以肯定地说我们正在处理 Windows。Windows 没有将 DLL“退出”到可执行文件的真正概念。Windows 确实知道标准函数调用是如何工作的(WINAPI),但甚至不要求来自的函数GetProcAddressWINAPI调用。这只是关于外部接口上的函数,inline函数不需要遵守GetProcAddress. 事实上,Windows 根本不需要你的代码从函数构建。有限状态编译器可能会发出使用跳转而不是调用的代码。

所以,这里的挑战是你的可执行文件有一个任意的 ABI,GCC 有自己的 ABI,两者完全不兼容。当您实现自己的“队列”机制时,您会发现很多。没有可能的通用机制。


推荐阅读