繁体   English   中英

解释器中的功能指针

[英]Function-Pointer in Interpreter

我正在构建一个AST的C解释器(在C ++中)。 我想给用户机会与真实的DLL进行通信。 例如:我从DLL调用一个函数。 该函数需要一个指向函数的指针(用于回调)。 有一个问题:我没有函数的真实地址,因为我要提供给DLL函数的函数仅作为AST中的节点存在。 有办法解决问题吗? 我考虑过要使用内置于解释器中的类似代理的函数,该函数在AST中委派给该函数。 问题是,代理功能必须具有相同的签名才能从DLL函数中调用...而且我无法在运行时创建动态函数。

您没有具体说明要使用的API / dll,但其中大多数都提供了与回调函数指针一起提供并会通过的“用户数据”的void * (或Windows上的LPVOID )。回调函数,以及适合该回调的其他任何参数。

您可以做的是传递一个指向AST的指针作为此额外的指针,并为实际的回调编写一个小的包装函数,将该void *转换回AST * ,然后在该AST上调用您的解释器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM