У меня есть запрос о связывании языков lua и c.
пример использования lua)
a[1].b.c[1].d = 1
a[1].b.c[2].d = 2
a[2].b.c[1].d = 3
a[2].b.c[2].d = 4
Мне интересно, как создать это с помощью lua C api. Это код, который я использовал в C
lua_createtable(L, 2, 0);
lua_pushnumber(L, 1);
{
lua_createtable(L, 0, 1);
{
lua_newtable(L);
lua_pushnumber(L, 1);
{
lua_pushnumber(L, 49);
lua_setfield(L, -2, "d");
lua_settable(L, -3);
}
lua_pushnumber(L, 2);
{
lua_pushstring(L, "old");
lua_setfield(L, -2, "d");
lua_settable(L, -3);
}
lua_setfield(L, -2, "c");
}
lua_setfield(L, -2, "b");
}
lua_pushnumber(L, 2);
{
lua_createtable(L, 0, 1);
{
lua_newtable(L);
lua_pushnumber(L, 1);
{
lua_pushnumber(L, 49);
lua_setfield(L, -2, "d");
lua_settable(L, -3);
}
lua_pushnumber(L, 2);
{
lua_pushstring(L, "old");
lua_setfield(L, -2, "d");
lua_settable(L, -3);
}
lua_setfield(L, -2, "c");
}
lua_setfield(L, -2, "b");
}
lua_setglobal(L, "a");
Кстати PANIC: незащищенная ошибка при вызове Lua API (попытка проиндексировать числовое значение) У меня такая ошибка
Большое спасибо за то, что сказал мне это.
lua_pushnumber
после каждогоlua_newtable
? Кроме того, почему вы так комбинируетеlua_setfield
иlua_settable
? Возможно, вы могли бы добавить несколько комментариев к своему коду, чтобы прояснить ситуацию, иначе его будет очень трудно читать. - person DarkWiiPlayer   schedule 13.11.2020