在Lua中调用C函数

本文介绍如何在Lua中调用C函数,通过一个C++编写的average()函数计算参数平均值。首先展示C++函数的实现,利用lua_gettop获取参数个数,然后计算总和并返回平均值。接着在Lua解释器初始化后注册该函数,最终在Lua脚本中调用以计算平均数。

    Lua当然也能够调用C中定义的函数。一个平均数的例子,解释一下。

   

   下面给出的C++函数average()演示了如何接受多个参数且返回超过一个值。

  1.      lua_gettop函数返回栈顶的索引值。因为在Lua中栈是从1开始编号的,因此该函数获得的值就是参数的个数。
  2.     在for循环中计算所有参数之和。
  3.     调用lua_pushnumber()将参数的平均值压栈。  
  4.     最后,函数返回1,说明有一个返回值在栈中。 

   现在C++函数已经被定义好了,我们必须将它告诉Lua解释器。这将在main函数中初始化Lua解释器和载入库完成之后完成注册函数:

 

 lua_register(L, "avg", average);  //第二参数为Lu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值