作为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堆栈中取出的吗?
答案 0 :(得分:0)
看看lua_Reader
本身而不是lua_load
上的文档。详细解释了该功能的要求:
lua_load
使用的阅读器功能。每当lua_load
每次需要另一个块时,它都会通过其数据参数调用读取器。读取器必须使用一块新的块将指针返回到内存块,并将大小设置为块大小。该块必须存在,直到再次调用阅读器功能为止。要用信号通知块的结尾,读取器必须返回NULL
或将size设置为零。 reader函数可以返回大于零的任何大小的片段。