我想在 Lua 和 C 中处理以下代码:
假设我有一个绑定(bind)到 Lua 的名为 Foo
的 C 函数。我在 Lua 脚本中这样调用它:
Foo(15, "bar", function(z) return 2 * z + 1 end)
在 C 端,我检索参数并且可以将数字和字符串存储在我的结构中。但是我需要什么数据类型来存储匿名函数呢?我以后怎么调用它?
最佳答案
您不能将 Lua 函数存储为 C 数据类型,就像您不能将 Lua 表存储为 C 数据类型一样。
你可以做的是使用 the registry来存储这个值。注册表是一个全局可用的表,供所有 C 用户存储数据。为所有代码选择一个键并在该键上放置一个表通常是个好主意。该表将包含您要保留的值。这将有助于减少与使用注册表的其他 C 代码的冲突。
关于调用 Lua 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6447664/