下面的代码是用来打印lua栈数据的简单版本:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lua.hpp"
#include "lauxlib.h"
#include "lualib.h"
static void stackDump(lua_State* L)
{
static int count = 0;
printf("begin dump lua stack%d\n", count);
int top = lua_gettop(L);
for (int i = top; i > 0; --i)
{
int t = lua_type(L, i);
switch (t)
{
case LUA_TSTRING:
printf("%s\n", lua_tostring(L, i));
break;
case LUA_TBOOLEAN:
printf(lua_toboolean(L, i) ? "true\n" : "false\n");
break;
case LUA_TNUMBER:
printf("%g\n", lua_tonumber(L, i));
break;
default:
printf("%s\n", lua_typename(L, t));
break;
}
}
++count;
}
int main()
{
lua_State* L = luaL_newstate(); /* create state */
if (L == NULL) {
printf("lua state build error.\n");
return 1;
}
luaL_openlibs(L);
lua_pushinteger(L, 100);
lua_pushinteger(L, 200);
lua_pushinteger(L, 300);
lua_pushboolean(L, 0);
lua_pushboolean(L, 1);
stackDump(L);
lua_close(L);
return 0;
}