[英]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.