Red de conocimiento informático - Material del sitio web - Cómo convertir char* a tipo cadena en lua

Cómo convertir char* a tipo cadena en lua

Primero, veamos un ejemplo simple de cómo implementar una función simple que devuelve el valor sin de un valor dado (una implementación más profesional debería verificar si su argumento es un número):

static int l_sin ( lua_State *L) {

double d = lua_tonumber(L, 1); /* Obtener parámetros*/

lua_pushnumber(L, sin(d)); /

return 1; /*Número de resultados*/

}

Cualquier función registrada en Lua debe tener el mismo prototipo. La declaración del prototipo se define como lua_CFunction en lua.h:

typedef int (*lua_CFunction) (lua_State *L);

Desde la perspectiva del lenguaje C, las funciones del lenguaje C aceptan Toma uno parámetro, el estado Lua, y devuelve un número que indica el número de valores devueltos. Por lo tanto, la función no necesita borrar la pila antes de colocar el valor de retorno en la pila; después de que la función regresa, Lua borra automáticamente todo lo que hay en la pila debajo del resultado devuelto.

Para utilizar esta función en Lua, también debemos registrarla primero. Usamos lua_pushcfunction para este propósito: recibe un puntero a una función C y crea un valor de tipo función en Lua para representar la función.