저는 Lua 5.2 C API를 사용하고 있습니다. 문자열 변수 또는 문자열 리터럴을 받아들이는 함수를 얻으려고합니다. Lua 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;
}
,이 작업을 수행합니다
hook.printTest('hello') -- prints 'hello'
a = 'hello'
hook.printTest(a) -- prints 'a'
나는 루아 아주 새로운 해요 및이 문서 사용 : http://www.lua.org/manual/5.2/manual.html 및 발견하고 있지 않다/이해 리터럴로부터 변수를 식별하는 방법. (예를 들어, lua_isliteral() 또는 lua_isvariable() 메소드는 없습니다).
'printTest'는 0을 반환해야합니다. – lhf