Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C语言编写lua_读取器函数_C_Lua - Fatal编程技术网

用C语言编写lua_读取器函数

用C语言编写lua_读取器函数,c,lua,C,Lua,作为C语言中Lua库的一部分,有用于加载Lua块的函数Lua\u load。此函数的第二个参数是lua\u读取器,它是“用户提供的读取器函数,用于读取区块。”lua\u读取器定义如下: typedef const char*(*lua_Reader)(lua_State*L,void*data,size\u t*size) 我的问题是如何编写这样一个可以提供给lua\u load的函数。我在网上找不到任何有用的例子 一些提供信息但不足以帮助我编写此类函数的链接: 更具体地说,我不了解函数lu

作为C语言中Lua库的一部分,有用于加载Lua块的函数
Lua\u load
。此函数的第二个参数是
lua\u读取器
,它是“用户提供的
读取器
函数,用于读取区块。”
lua\u读取器
定义如下:

typedef const char*(*lua_Reader)(lua_State*L,void*data,size\u t*size)

我的问题是如何编写这样一个可以提供给
lua\u load
的函数。我在网上找不到任何有用的例子

一些提供信息但不足以帮助我编写此类函数的链接:


更具体地说,我不了解函数
lua\u load
的数据参数。它被列为一个
void*
,尽管我假设一个人会将
const char*
char*
传递给它。然而,我不明白它从何而来。它是否已从Lua堆栈中拔出?

请查看其自身的文档,而不是
Lua\u load
。它详细说明了该功能的要求:

lua\u load
使用的读卡器功能。每当它需要另一块数据块时,
lua\u load
调用读取器,传递其数据参数。读取器必须返回一个指向内存块的指针,该内存块包含一个新的块,并将大小设置为块大小。在再次调用读卡器函数之前,该块必须存在。要发出区块结束的信号,读取器必须返回
NULL
或将size设置为零。读卡器函数可以返回大于零的任何大小的块


请澄清您的具体问题或添加其他详细信息,以突出显示您所需的内容。正如目前所写的,很难准确地说出你在问什么。请参阅页面以获取澄清此问题的帮助。
数据
可以用作“上下文”。例如,您可以使用单个函数
lua\u reader
创建两个读卡器实例。这两个读卡器的
数据
参数不同,这将允许它们根据
数据
实现不同的功能。“上下文”是实现类似OOP的对象和方法的C-ish方式(函数是一种方法,
data
是该方法应用的对象)。