lu a程序开发中辅助库函数有哪些?

2024-05-15 20:25

1. lu a程序开发中辅助库函数有哪些?

这里我们按字母表次序列出了辅助库中的所有函数和类型。
如果你预先知道结果串的长度, 你可以这样使用缓存:
首先定义一个类型为 lu aL_Buffer 的变量 b。
然后调用 lu aL_buffinitsize(L, &b, sz) 预分配 sz 大小的空间。
接着将字符串复制入这个空间。
最后调用 lua L_pushresultsize(&b, sz), 这里的 sz 指已经复制到缓存内的字符串长度。
一般的操作过程中,字符串缓存会使用不定量的栈槽。 因此,在使用缓存中,你不能假定目前栈顶在哪。 在对缓存操作的函数调用间,你都可以使用栈,只需要保证栈平衡即可; 即,在你做一次缓存操作调用时,当时的栈位置和上次调用缓存操作后的位置相同。 (对于 luaL_addvalue 是个唯一的例外。) 在调用完 luaL_pushresult 后, 栈会恢复到缓存初始化时的位置上,并在顶部压入最终的字符串。
调用一个元方法。
如果在索引 obj 处的对象有元表, 且元表有域 e 。 这个函数会以该对象为参数调用这个域。 这种情况下,函数返回真并将调用返回值压栈。 如果那个位置没有元表,或没有对应的元方法, 此函数返回假(并不会将任何东西压栈)
lu aL_addchar
void lu aL_addchar (lu aL_Buffer *B, char c);
向缓存 B (参见 l。aL_Buffer ) 添加一个字节 c。
lu aL_addlstring
void l uaL_addlstring (luaL_Buffer *B, const char *s, size_t l);
向缓存 B (参见 luaL_Buffer ) 添加一个长度为 l 的字符串 s。 这个字符串可以包含零。
lu aL_addsize
void lu aL_addsize (lu aL_Buffer *B, size_t n);
向缓存 B (参见 l。aL_Buffer ) 添加一个已在之前复制到缓冲区(参见 lu aL_prepbuffer) 的长度为 n 的字符串。
lu aL_addstring
void l uaL_addstring (luaL_Buffer *B, const char *s);
向缓存 B (参见 lu aL_Buffer ) 添加一个零结尾的字符串 s。
lu aL_addvalue
void lu aL_addvalue (luaL_Buffer *B);
向缓存 B (参见 lu aL_Buffer ) 添加栈顶的一个值,随后将其弹出。
这个函数是操作字符串缓存的函数中,唯一一个会(且必须)在栈上放置额外元素的。 这个元素将被加入缓存。
检查 cond 是否为真。 如果不为真,以标准信息形式抛出一个错误 (参见 luaL_argerror)。
luaL_argerror
int luaL_argerror (lua_State *L, int arg, const char *extramsg);
抛出一个错误报告调用的 C 函数的第 arg 个参数的问题。 它使用下列标准信息并包含了一段 extramsg 作为注解: bad argument #arg to 'funcname' (extramsg)
这个函数永远不会返回。
luaL_Buffer
typedef struct luaL_Buffer luaL_Buffer;
字符串缓存 的类型。
字符串缓存可以让 C 代码分段构造一个 Lua 字符串。 使用模式如下:
首先定义一个类型为 luaL_Buffer 的变量 b。
调用 luaL_buffinit(L, &b) 初始化它。
然后调用 luaL_add* 这组函数向其添加字符串片断。
最后调用 luaL_pushresult(&b) 。 最后这次调用会在栈顶留下最终的字符串。

lu a程序开发中辅助库函数有哪些?