6
Tôi đang cố chuyển bảng Lua sang chương trình C của mình nhưng tôi không biết cách thực hiện.Đọc bảng Lua từ C
đangMy Lua:
local stages = {}
stages[1] = stage1
stages[2] = stage2
stages[3] = stage3
lstage.buildpollingtable(stages)
mã C của tôi:
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;
}
gì làm tôi phải làm gì để chạy trên tất cả các yếu tố? Mã này tạo ra lỗi như sau:
bad argument #-3 to 'buildpollingtable' (lstage-Stage * expected, got table)
Bất cứ ai có thể giải thích tôi đang làm gì sai?
Tuy nhiên, thông báo lỗi nên được '..., có nil'. Có lẽ sử dụng các số âm là nhầm lẫn 'lstage_tostage'. – lhf
Nó trả về lỗi này: "cảnh báo: đối số đi qua 3 của 'lua_getfield' làm cho con trỏ từ số nguyên mà không có dàn diễn viên [được bật theo mặc định]" =/... cảm ơn bạn đã giúp đỡ @lhf – Crasher
@Crasher, bạn đã sử dụng mã 'lua_rawgeti'? – lhf