首页 > 代码库 > Lua 中栈操作的C API示例
Lua 中栈操作的C API示例
这是《Lua程序设计》中的例子,做个简单记录。
#include <stdio.h> #include <lua5.2/lua.h> #include <lua5.2/lauxlib.h> static void stackDump(lua_State *L){ int i; int top = lua_gettop(L); for(i = 1; i <= top; i++){ int t = lua_type(L, i); switch(t){ case LUA_TSTRING: printf("'%s'", lua_tostring(L, i)); break; case LUA_TBOOLEAN: printf(lua_toboolean(L, i) ? "true":"false"); break; case LUA_TNUMBER: printf("%g", lua_tonumber(L, i)); break; default: printf("%s", lua_typename(L, t)); break; } printf(" "); } printf("\n"); } int main(void){ lua_State *L = luaL_newstate(); lua_pushboolean(L, 1); lua_pushnumber(L, 10); lua_pushnil(L); lua_pushstring(L, "vonzhou"); stackDump(L); // dump the stack lua_pushvalue(L, -4);// push the value of the index to the stack stackDump(L); lua_replace(L, 3); // pop a value and replace the index's stackDump(L); lua_settop(L, 6); // set the top index, fill 'nil' stackDump(L); lua_remove(L, -3); // stackDump(L); lua_settop(L, -5); stackDump(L); lua_close(L); return 0; }运行结果:
简单画个示意图:
Lua 中栈操作的C API示例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。