在lua
中表的使用是最常见的,在c中如何对lua
中的表进行 *** 作也是很经常使用的功能,在如下的代码中加载了lua
代码以后,通过lua_getglobal
获得了相应的表,可以使用lua_getfield
进行相应的设置了,这里必须清楚的一点是,你需要对堆栈中的数据较为清楚,清楚了堆栈顺序,你才能够知道你设置的数据到底是对谁有用的。
下面的例子,找到相应的表,原先的表并没有y
的元素,后面通过lua_setfield
对数据进行设置。使得lua中表中有了y
的元素。
代码如下:
#include "stdafx.h"
extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
#include "luaconf.h"
};
#include
using namespace std;
int main()
{
int error;
lua_State* L = luaL_newstate();
luaL_openlibs(L);
int ret = luaL_dofile(L, "table_test.lua");
if (ret != 0)
{
printf("%s", lua_tostring(L, -1));
}
lua_getglobal(L, "print_table");
lua_pcall(L, 0, 0, 0);
lua_getglobal(L, "tbtable");
lua_getfield(L, -1, "x");
const char *pstr = lua_tostring(L, -1);
lua_getglobal(L, "tbtable");
lua_pushstring(L, "abc");
lua_setfield(L, -2, "y");
lua_getglobal(L, "print_table");
lua_pcall(L, 0, 0, 0);
lua_close(L);
return 0;
}
lua
代码如下:
tbtable = {x="12"}
function print_table()
print(tbtable.x)
print(tbtable.y)
end
function return_table()
return {x="abc"}
end
在c语言中,如果不太清楚栈的数据,压栈和出栈情况的话,可以先画出每个步骤的栈情况。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)