スタックが良く分からなかったので、調べてみた。
#include <stdio.h> #include "lua.h" #include "lualib.h" #include "lauxlib.h" int main() { lua_State *L = lua_open(); luaL_loadstring(L,"function f(x, y) return x + y end"); printf("top: %d\n", lua_gettop(L)); lua_call(L, 0, 0); printf("top: %d\n", lua_gettop(L)); lua_getglobal(L, "f"); printf("top: %d\n", lua_gettop(L)); lua_pushnumber(L, 1); printf("top: %d\n", lua_gettop(L)); lua_pushnumber(L, 2); printf("top: %d\n", lua_gettop(L)); if(lua_pcall(L, 2, 1, 0) != 0) { printf("error: %s\n", lua_tostring(L, -1)); } else { printf("%f\n", lua_tonumber(L, -1)); } printf("top: %d\n", lua_gettop(L)); lua_pop(L, 1); lua_close(L); }
top: 1
top: 0
top: 1
top: 2
top: 3
3.000000
top: 1