我正在使用Lua 5.2c API我试图让函数接受字符串变量或字符串文本。
此代码:

static int printTest(lua_State *L)
{
    size_t lslen = NULL;
    const char *lsrc = lua_tolstring(L, 0, &lslen);
    printf("%s\n", lsrc);
}
/* ----- Registration array ----- */
static const luaL_Reg testhook[] = {
        {"printTest", printTest},
        {NULL, NULL} /* sentinel */
};
/* ----- Registration function ----- */
LUALIB_API int registerTestHookFunctions(lua_State *L)
{
    lua_newtable(L);
    lua_setglobal(L, "hook");
    lua_getglobal(L, "hook");
    luaL_setfuncs(L, testhook, 0);
    lua_settop(L, 0);
    return 0;
}

从Lua运行时,将执行以下操作:
hook.printTest('hello')  -- prints 'hello'
a = 'hello'
hook.printTest(a) -- prints 'a'

我对Lua很陌生,使用这个文档:http://www.lua.org/manual/5.2/manual.html
我不知道如何从文字中辨别变量(例如,没有lua_isliteral()或lua_isvariable()方法)。

最佳答案

您已将错误的索引传递给lua_tolstring。参考手册明确指出
0永远不是可接受的索引。
相对值使用负索引,绝对值使用正索引。这两个条件都不是零。

关于c - Lua API计算变量名称而不是值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10704008/

10-12 02:01