lua调用C语言函数,在函数中进行类型检查

#include <stdio.h> #include <lua.h> #include <lauxlib.h> #include <lualib.h> static int process_table(lua_State *L) { // 检查第一个参数是否是表类型 if (!lua_istable(L, 1)) { lua_pushstring(L, "第一个参数必须是表"); lua_error(L); } // 获取表中的两个元素 lua_pushinteger(L, 1); lua_gettable(L, 1); if (!lua_isstring(L, - 1)) { lua_pushstring(L, "表中的第一个元素必须是字符串"); lua_error(L); } const char *str = lua_tostring(L, - 1); lua_pop(L, 1); lua_pushinteger(L, 2); lua_gettable(L, 1); if (!lua_isnumber(L, - 1)) { lua_pushstring(L, "表中的第二个元素必须是数字"); lua_error(L); } double num = lua_tonumber(L, - 1); lua_pop(L, 1); printf("字符串是: %s, 数字是: %f\n", str, num); char buffer[100]; sprintf(buffer, "%s%f", str, num); lua_pushstring(L, buffer); return 1; }
上一篇:SystemVerilog学习——构造函数new-二、基本结构