Еще один способ атаковать ваш вопрос - использовать upvalues . В основном, вы регистрируете функции C с помощью функции ниже вместо lua_register
:
void my_lua_register(lua_State *L, const char *name, lua_CFunction f)
{
lua_pushstring(L, name);
lua_pushcclosure(L, f, 1);
lua_setglobal(L, name);
}
Тогда getFunctionName является прямым
const char* getFunctionName(lua_State* L)
{
return lua_tostring(L, lua_upvalueindex(1));
}
Тем не менее, то, что вы пытаетесь сделать, кажется сомнительным - чего вы пытаетесь достичь? Функция runCommand
, опубликованная в вопросе, выглядит ужасно неэффективным способом сделать то, что Lua сделает для вас в любом случае.