A macro something like this (untested and written in SO editing box):
#define GET_INTEGER_WARN(ind, fld) do {
lua_getfield(L, ind, #fld);
cr->fld = lua_tointeger(L, -1);
if (!lua_isinteger(L, -1))
printf(#fld" allows only numbers;");
} while (0)
Would let you do something like this:
lua_getglobal(L, "lgd");
GET_INTEGER_WARN(-1, value_pos_x);
GET_INTEGER_WARN(-2, value_pos_y);
GET_INTEGER_WARN(-3, time);
A function like this (same caveats as before):
lua_Integer
get_integer_warn(lua_State *L, int ind, char *fld)
{
lua_getfield(L, ind, fld);
if (!lua_isinteger(L, -1))
printf("%s allows only numbers", fld);
return lua_tointeger(L, -1);
}
Would let you do something like this:
cr->value_pos_x = get_integer_warn(L, -1, "value_pos_x")
cr->value_pos_y = get_integer_warn(L, -2, "value_pos_y")
cr->time = get_integer_warn(L, -3, "time")
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…