调用 Lua 函数

标签 c api lua

我想在 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/

相关文章:

android - 抽屉导航 Android API 特定的布局属性

linux - 包括 "Force "选项以单击特定包的 "install"按钮

c - "const void * const *"在 C 中是什么意思?

c - 分配给 double 据类型的位数

api - 如何处理 “App is temporarily blocked from logging in with your Google account” 屏障

php - Linkedin 共享 API 403 访问被拒绝

c - 这段代码中定义 "#define MK_CMD(x) void cmd_ ## x (arg_t*)"是什么意思?

c - 我无法将十六进制值扫描到 C 中的数组中

api - Lua 与 Freebase API

c - 如何用 LuaJIT 定义 C 函数?