LuaCAPIの使用に問題があります。pcall(C API関数)が失敗すると、エラーはスタックにプッシュされます。
lua_tostring
はスタックにエラーをlua_gettop
示していますが、はスタックが空であることを示しています。
#include <lua5.2/lauxlib.h>
#include <lua5.2/lua.h>
#include <lua5.2/lualib.h>
int main()
{
lua_State *L = luaL_newstate();
lua_pcall(L, 0, 0, 0);
printf("%d\n", lua_gettop(L)); // outputs 0, indicating empty stack
printf("%s\n", lua_tostring(L, -1)); // outputs "attempt to call a nil value", indicating non-empty stack
}
コンパイル:gcc main.c `pkg-config --cflags lua5.2`` pkg-config --libs lua5.2`
このプログラムの表示:0はnil値を呼び出そうとします
lua_gettop(L)はスタックサイズを返します。ここで0を取得します。空のスタックから文字列を取得するにはどうすればよいですか?
The behavior is the same with the 5.1 version.