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 ]