Lua 在Lua中调用C函数

本文详细介绍了如何在Lua中定义和使用C函数。通过示例展示了C函数的正确声明方式,参数传递方法以及如何将C函数注册到Lua环境中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先能够被Lua调用的C函数要满足如下声明:

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

例如:
由于Lua有局部栈,所以参数在栈中的位置永远是1开始。并且函数返回后会自动清理栈。

//c
static int l_sin (lua_State *L) {
    double d = luaL_checknumber(L, 1);
    lua_pushnumber(L, sin(d));
    return 1; /* number of results */
}

然后,你先要注册c函数(其实就是把函数地址压入栈并设置全局变量):

//c
lua_pushcfunction(L, l_sin);
lua_setglobal(L, "mysin");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值