在C中写一个lua_Reader函数[关闭]

问题描述 投票:2回答:1

作为C语言中Lua库的一部分,有一个用于加载Lua块的函数lua_load。该函数的第二个参数是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的数据参数。它被列为void*,虽然我会假设有人会通过const char*char*。但是,我不明白它的来源。是从Lua堆栈中取出来的吗?

c lua
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.