tipos sintaxis programacion parametros funciones ejemplos datos con codigos basicos c++ lua

sintaxis - En C++ llamado desde Lua, lua_type(L, 0) devuelve 9 que no está documentado



sintaxis de c++ (1)

Estoy usando Lua como lenguaje de scripting en mi juego (C ++). En una llamada (de lua a c ++) compruebo qué tipo está en la parte superior de la pila:

if(lua_type(L, (0)) == LUA_TSTRING)

Pero a veces lua_type (L, (0)) devuelve 9.

Parece que no puedo encontrar ninguna referencia a esto (los valores de retorno deben estar entre -1 y 8 o LUA_TNONE, LUA_TNIL, ... LUA_TTHREAD).

¿Qué esta pasando?


La parte superior de la pila está en el índice -1, no en el 0.

0 nunca se puede usar como un índice para acceder a la pila:

(Tenga en cuenta que 0 nunca es un índice aceptable).

en §4.3 - Índices válidos y aceptables en el manual de referencia.

La API de C en Lua no tiene la mano del programador:

Como en la mayoría de las bibliotecas de C, las funciones de Lua API no verifican sus argumentos en cuanto a validez o consistencia. Sin embargo, puede cambiar este comportamiento compilando Lua con la macro LUA_USE_APICHECK definida. [ §4 ]