luaのスタックを調べる

#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"

void check_stack(lua_State *L)
{
	int i;
	for (i = 0; i < lua_gettop(L); i++) {
		switch (lua_type(L, i)) {
		case LUA_TNIL:
			printf("stack[%d]: nil\n", i);
			break;
		case LUA_TNUMBER:
			printf("stack[%d]: number: %g\n", i, lua_tonumber(L, i));
			break;
		case LUA_TBOOLEAN:
			printf("stack[%d]: boolean: %d\n", i, lua_toboolean(L, i));
			break;
		case LUA_TSTRING:
			printf("stack[%d]: string: %s\n", i, lua_tostring(L, i));
			break;
		case LUA_TTABLE:
			printf("stack[%d]: table\n", i);
			break;
		case LUA_TFUNCTION:
			printf("stack[%d]: function: %p\n", i, lua_tocfunction(L, i));
			break;
		case LUA_TUSERDATA:
			printf("stack[%d]: user data: %p\n", i, lua_touserdata(L, i));
			break;
		case LUA_TTHREAD:
			printf("stack[%d]: thread: %p\n", i, lua_tothread(L, i));
			break;
		case LUA_TLIGHTUSERDATA:
			printf("stack[%d]: light user data\n", i);
			break;
		default:
			printf("stack[%d]:不明な型\n", i);
			break;
		}
	}
}

int main(int argc,char* argv[])
{
	double v;
	lua_State *L=lua_open();
	luaopen_base(L);
	luaopen_io(L);
	check_stack(L);
	return 0;
}