当从相同的表字段调用C函数时,将表作为自动参数获取。

我有几个全局整数变量,如 Lua 脚本中的 A0、A1、A2。它们在 C 端声明。它们中的每一个包含唯一的数字值。

在脚本中,用户使用这些别名操作设备引脚:

set_pin_bool(A0, 1)

这会调用相应的 C 函数。我认为这太像 C 语言,不是很方便。更好的方式是调用像 A0.hi()、A0.low()、A0.set(1) 等方法。

所以我试图将 A0 等声明为 C 中的表格(this 只是一个结构体):

lua_newtable(this->luactx);
lua_pushstring(this->luactx, "val");
lua_pushinteger(this->luactx, value);
lua_rawset(this->luactx, -3);
lua_setglobal ( this->luactx, "A0" );

我可以创建一个类似于 hi 的字段,并使用 lua_pushcfunction 注册它。但当我调用 A0.hi() 时,在 C 端我将无法访问它所调用的表格以获取其他字段。我搜索了一下,似乎没有办法从 C 中获取类似于 self 的东西。有没有办法实现它?我不想将表格本身作为参数传递,像 **A0.hi(A0)**。

可能会有很多别名,它们的名称可能会不同。

或者可能有不同的方法实现同样的目标?

点赞
用户646619
用户646619

使用以下方式调用你的 hi 函数:

A0:hi()

这相当于:

A0.hi(A0)
2015-03-10 12:43:43