Ubuntu nginx let‘s encrypt免费 https 设置
- 读取基本数据类型的接口
lua_tonumber
和lua_tointeger
- 用途:用于从Lua栈中获取数字类型的数据。
lua_tonumber
用于获取浮点数,lua_tointeger
用于获取整数。 - 示例:假设在Lua中调用一个C函数并传入一个数字,在C函数中可以这样获取这个数字。
static int get_number(lua_State *L) {
double num = lua_tonumber(L, 1);
int integer_num = lua_tointeger(L, 1);
printf("浮点数: %f, 整数: %d\n", num, integer_num);
return 0;
}
lua_tostring
- 用途:用于从Lua栈中获取字符串类型的数据。
- 示例:当Lua传入一个字符串给C函数时,可以使用这个接口获取。
static int get_string(lua_State *L) {
const char *str = lua_tostring(L, 1);
printf("字符串: %s\n", str);
return 0;
}
lua_toboolean
- 用途:用于从Lua栈中获取布尔类型的数据。
- 示例:如果Lua传入一个布尔值给C函数,可以如下获取。
static int get_boolean(lua_State *L) {
int boolean_value = lua_toboolean(L, 1);
printf("布尔值: %d\n", boolean_value);
return 0;
}
- 读取表(Table)类型数据的接口
lua_istable
、lua_gettable
和lua_push*
系列函数组合
- 用途:
lua_istable
用于检查栈顶元素是否是表。lua_gettable
用于获取表中的元素,通常需要先将键(可以是数字或字符串)压入栈,然后调用lua_gettable
来获取对应的值。lua_push*
系列函数用于将键压入栈。 - 示例:假设在Lua中有一个表
{name = "John", age = 30}
,在C函数中获取表中的元素。
static int get_table_data(lua_State *L) {
if (lua_istable(L, 1)) {
lua_pushstring(L, "name");
lua_gettable(L, 1);
const char *name = lua_tostring(L, -1);
lua_pop(L, 1);
lua_pushinteger(L, 2);
lua_gettable(L, 1);
int age = lua_tointeger(L, -1);
lua_pop(L, 1);
printf("姓名: %s, 年龄: %d\n", name, age);
} else {
lua_pushstring(L, "第一个参数必须是表");
lua_error(L);
}
return 0;
}
- 读取函数类型数据的接口
- 读取用户数据(UserData)类型的接口