C语言生成lua数组表格问题,困扰中~~~

xiaolizi 2013-08-03 04:19:17
需求是这样,在c语言中有一个结构如下:
struct A
{
BYTE x;
BYTE y;
DWORD data[2];
};

需要转换成lua的表格,表格形式这样:
tbl_a = { 4, 5, {1,2} }

为了满足上述需求给脚本调用,我在c代码中这样写:
lua_createtable(L, 0, 0); // 创建表格A
lua_pushnumber(L, 4);
lua_rawseti(L, -2, 1); // x
lua_pushnumber(L, 5);
lua_rawseti(L, -2, 2); // y

lua_createtable(L, 0, 0); // 创建子表格,对应上面的data数据
lua_pushnumber(L, -2, 1);
lua_rawseti(L, -2, 1);
lua_pushnumber(L, -2, 2);
lua_rawseti(L, -2, 2);
lua_setfield(L, -3, "data"); // 设置子表格,这个用法可能是不对的
lua_setfield(L, -2, "A"); // 完成表格A的创建

这样生成的表格数据是无效的,在调用脚本的时候会失败,应该是嵌套的表格创建方法不对,请lua大神指点一二,谢谢!
...全文
204 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
axx1611 2013-08-23
  • 打赏
  • 举报
回复
set_field(L, -3, "data");有两处错误 一是堆栈错了,lua_rawseti是会自动出栈的,所以此时父表格的堆栈值还是-2, 另外子表格应该是父表格的3第个元素,所以这句正确的应该是lua_setfield(L, -2, 3); 然后最后的lua_setfield(L, -2, "A");也不正确,因为此时堆栈-2位置上是啥不能确定 你可以考虑使用lua_setglobal函数把它存到全局变量里

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧