1. Visual Studio:在Visual Studio中,您可以通过按下“Alt”键来打开菜单栏,然后选择“工具”>“选项”>“环境”>“键盘”来打开键盘设置。在键盘设置中,您可以选择“Visual C++ 6”或“Visual Basic 6”等辅助模式,并将其分配给您想要使用的快捷键。
2. Eclipse:在Eclipse中,您可以通过选择“Window”>“Preferences”>“General”>“Keys”来打开键盘设置。在键盘设置中,您可以选择“Emacs”或“Visual Studio”等辅助模式,并将其分配给您想要使用的快捷键。
3. Sublime Text:在Sublime Text中,您可以通过选择“Preferences”>“Key Bindings”来打开键盘设置。在键盘设置中,您可以选择“Default (Windows).sublime-keymap”或“Visual Studio.sublime-keymap”等辅助模式,并将其分配给您想要使用的快捷键。
请注意,辅助模式可能会更改您的编程软件中的某些默认快捷键,因此在使用辅助模式时,请确保您已经熟悉了您的编程软件中的所有快捷键,并且已经为您的辅助模式分配了与您熟悉的快捷键相同的键位。
1.辅助库提供了一些便捷函数,方便在 C 中为 Lu a 编程。 基础 API 提供了 C 和 L ua 交互用的主要函数, 而辅助库则为一些常见的任务提供了高阶函数。
所有辅助库中的函数和类型都定义在头文件 lauxlib.h 中, 它们均带有前缀 luaL_。
辅助库中的所有函数都基于基础 API 实现。 故而它们并没有提供任何基础 API 实现不了的功能。 虽然如此,使用辅助库可以让你的代码更为健壮。
2.一些辅助库函数会在内部使用一些额外的栈空间。 当辅助库使用的栈空间少于五个时, 它们不去检查栈大小;而是简单的假设栈够用。
一些辅助库中的函数用于检查 C 函数的参数。 因为错误信息格式化为指代参数 (例如,"bad argument #1"), 你就不要把这些函数用于参数之外的值了。
如果检查无法通过, luaL_check* 这些函数一定会抛出错误。
3.设置给定活动记录中的局部变量的值。 参数 ar 与 n 和 lu a_getlocal 中的一样 ()。 lua_setlocal 把栈顶的值赋给变量然后返回变量的名字。 它会将值从栈顶d出。
当索引大于活动局部变量的数量时,返回 NULL (什么也不d出)。
lu a_setupvalue
const char *l ua_setupvalue (lua_State *L, int funcindex, int n)
4.设置闭包上值的值。 它把栈顶的值d出并赋于上值并返回上值的名字。 参数 funcindex 与 n 和 lu a_getupvalue 中的一样 (参见 lu a_getupvalue )。
当索引大于上值的数量时,返回 NULL (什么也不d出)。
lu a_upvalueid
void *lu a_upvalueid (lua_State *L, int funcindex, int n)
5.返回索引 funcindex 处的闭包中 编号为 n 的上值的一个唯一标识符。 参数 funcindex 与 n 和 lu a _getupvalue 中的一样 (参见 l ua_getupvalue )。 (但 n 不可以大于上值的数量)。
6.这些唯一标识符可用于检测不同的闭包是否共享了相同的上值。 共享同一个上值的 Lu a 闭包(即它们指的同一个外部局部变量) 会针对这个上值返回相同的标识。
lu a_upvaluejoin
void lu a_upvaluejoin (lua_State *L, int funcindex1, int n1, int funcindex2, int n2)
让索引 funcindex1 处的 L ua 闭包的第 n1 个上值 引用索引 funcindex2 处的 Lua 闭包的第 n2 个上值。
这里我们按字母表次序列出了辅助库中的所有函数和类型。
1.如果你预先知道结果串的长度, 你可以这样使用缓存:
首先定义一个类型为 lu aL_Buffer 的变量 b。
然后调用 lu aL_buffinitsize(L, &b, sz) 预分配 sz 大小的空间。
接着将字符串复制入这个空间。
2.最后调用 lua L_pushresultsize(&b, sz), 这里的 sz 指已经复制到缓存内的字符串长度。
一般的 *** 作过程中,字符串缓存会使用不定量的栈槽。 因此,在使用缓存中,你不能假定目前栈顶在哪。 在对缓存 *** 作的函数调用间,你都可以使用栈,只需要保证栈平衡即可; 即,在你做一次缓存 *** 作调用时,当时的栈位置和上次调用缓存 *** 作后的位置相同。 (对于 luaL_addvalue 是个唯一的例外。) 在调用完 luaL_pushresult 后, 栈会恢复到缓存初始化时的位置上,并在顶部压入最终的字符串。
调用一个元方法。
3.如果在索引 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 ) 添加栈顶的一个值,随后将其d出。
4.这个函数是 *** 作字符串缓存的函数中,唯一一个会(且必须)在栈上放置额外元素的。 这个元素将被加入缓存。
检查 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) 。 最后这次调用会在栈顶留下最终的字符串。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)