我想把lua表传给我的c程序,但我不知道怎么做。
我的lua代码:
local stages = {}
stages[1] = stage1
stages[2] = stage2
stages[3] = stage3
lstage.buildpollingtable(stages)
我的C代码:
static int lstage_build_polling_table (lua_State * L) {
luaL_checktype(L, 1, LUA_TTABLE);
lua_getfield(L, 1, "stage1");
lua_getfield(L, 1, "stage2");
lua_getfield(L, 1, "stage3");
stage_t s1 = lstage_tostage(L, -3);
stage_t s2 = lstage_tostage(L, -2);
stage_t s3 = lstage_tostage(L, -1);
printf("%d\n",s1->priority);
printf("%d\n",s2->priority);
printf("%d\n",s3->priority);
return 1;
}
我要做什么才能把所有的元素都跑一遍?此代码生成如下错误:
“buildpollingtable”的参数-3错误(需要lstage stage*,get table)
有人能解释我做错了什么吗?
最佳答案
表中没有名为stage1
等的字段,只有1
、2
、3
等字段。所以试试看
lua_rawgeti(L,1,1);
lua_rawgeti(L,1,2);
lua_rawgeti(L,1,3);
而不是
lua_getfield(L, 1, "stage1");
lua_getfield(L, 1, "stage2");
lua_getfield(L, 1, "stage3");