考虑我有一个数据包(网络数据包),它存储在 C 中的一个数组中。我在 Lua 中有一个可以处理这个数据包的模块。现在我需要将此数据包传递给 Lua 进行处理。我想避免复制数据。为此,我可以使用userdata或lightuserdata。但是在这种情况下,基地址将被推送到堆栈顶部,我需要在 Lua 中编写回调或在 C 中为其编写元表。
我在如何开始用 C 编写一个基本的小回调时遇到了困难。我所需要的只是假设我有一个如下结构:
struct abc_{
int a;
int b;
char* c;
} abc_t;
int arr1[] = {'100', '2', '4' , '5', '6'};
现在我有一个包含一些数据的数组。在 C 语言中,我可以使用这种结构对该数组进行类型转换以获取特定值。
abc_t *test;
test = (abc_t *)arr1;
我如何在 Lua 中做同样的事情,我已经传递了arr1
堆栈顶部的地址并且结构是在 C 中定义的?我怎样才能得到变量的值a
,b
在没有副本的 Lua
问题2
假设我正在使用 C 并使用 Lua 堆栈来处理数组。
如果我想访问a[2]
,a
我的表在哪里,2 是索引,那么2
需要在堆栈的顶部,我需要将a
堆栈中的位置作为第二个参数传递给lua_gettable()
. 我怎样才能对结构做同样的事情?我想访问结构的特定元素。怎么做?