una - validar tipos c++
extendiendo Lua: verifica el número de parámetros pasados a una función (1)
Puede usar lua_gettop()
para determinar el número de argumentos pasados a una función C Lua:
int lua_gettop (lua_State *L);
Devuelve el índice del elemento superior en la pila. Debido a que los índices comienzan en 1, este resultado es igual al número de elementos en la pila (y entonces 0 significa una pila vacía).
static int idiv(lua_State *L) {
if (lua_gettop(L) != 2) {
return luaL_error(L, "expecting exactly 2 arguments");
}
int n1 = lua_tointeger(L, 1); /* first argument */
int n2 = lua_tointeger(L, 2); /* second argument */
int q = n1 / n2; int r = n1 % n2;
lua_pushinteger(L, q); /* first return value */
lua_pushinteger(L, r); /* second return value */
return 2; /* return two values */
}
Quiero crear una nueva función Lua.
Puedo usar la función con parámetros (estoy siguiendo este enlace ) para leer los parámetros de la función.
static int idiv(lua_State *L) {
int n1 = lua_tointeger(L, 1); /* first argument */
int n2 = lua_tointeger(L, 2); /* second argument */
int q = n1 / n2; int r = n1 % n2;
lua_pushinteger(L, q); /* first return value */
lua_pushinteger(L, r); /* second return value */
return 2; /* return two values */
}
Me gustaría saber si hay una manera de saber la cantidad de parámetros pasados a una función, para poder imprimir un mensaje si el usuario no llama a la función con dos parámetros.
Quiero ejecutar la función cuando el usuario escribe
idiv(3, 4)
e imprime un error cuando
idiv(2)
idiv(3,4,5)
and so on...