在C

时间:2019-02-19 06:41:03

标签: c lua

作为C语言中的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堆栈中取出的吗?

1 个答案:

答案 0 :(得分:0)

看看lua_Reader本身而不是lua_load上的文档。详细解释了该功能的要求:

  

lua_load使用的阅读器功能。每当lua_load每次需要另一个块时,它都会通过其数据参数调用读取器。读取器必须使用一块新的块将指针返回到内存块,并将大小设置为块大小。该块必须存在,直到再次调用阅读器功能为止。要用信号通知块的结尾,读取器必须返回NULL或将size设置为零。 reader函数可以返回大于零的任何大小的片段。