1

Lua 5.2CAPIを使用しています。文字列変数または文字列リテラルを受け入れる関数を取得しようとしています。

このコード:

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()メソッドはありません)。

4

1 に答える 1

5

に不正なインデックスを渡しましたlua_tolstring。リファレンス マニュアルには、次のように明確に記載されています。

0 は決して受け入れ可能なインデックスではありません。

相対値には負のインデックスを使用し、絶対値には正のインデックスを使用します。これらの条件はいずれも 0 ではありません。

于 2012-05-22T14:33:55.840 に答える