在 C 中编写 lua_Reader 函数

Lua 库中有一个名为 lua_load 的函数,用于加载 Lua 代码块。该函数的第二个参数是 lua_Reader,它是一个用户提供的 Reader 函数,用于读取代码块。lua_Reader 如下所示:

typedef const char* (*lua_Reader)(lua_State* L, void* data, size_t* size);

我的问题是如何编写这样的函数以供 lua_load 使用。我没有在网上找到任何有用的例子。

以下是一些提供信息但没有足够帮助我编写此函数的链接:

http://pgl.yoyo.org/luai/i/lua_load

http://pgl.yoyo.org/luai/i/lua_Reader

更具体地说,我不理解函数 lua_load 的第二个参数 data。它被列为 void*,但我认为应该传递 const char*char*。然而,我不明白它来自哪里。它是从 Lua 栈中拿出的吗?

点赞
用户9305398
用户9305398

请查看 lua_Reader 的文档,而不是lua_load。它详细说明了函数的要求:

lua_load使用的读取器函数。每次需要另一个代码块片段时,lua_load都会调用该读取器,并传递其数据参数。读取器必须返回指向具有新代码块片段的内存块的指针,并将大小设置为块大小。该块必须存在,直到再次调用读取器函数。为了表示代码块的结束,读取器必须返回NULL或将大小设置为零。读取器函数可以返回任何大于零的大小的代码块片段。

2019-02-19 06:47:01