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;
}