gpt4 book ai didi

c - 解释器中的函数指针

转载 作者:太空宇宙 更新时间:2023-11-04 04:03:33 25 4
gpt4 key购买 nike

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

最佳答案

您没有具体说明您要使用哪个 API/dll,但其中大多数提供了 void *(或 Windows 上的 LPVOID)与回调函数指针一起提供的“用户数据”将传递给回调函数,连同适合回调的任何其他参数。

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

关于c - 解释器中的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9026272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com