通过例子学习Lua(6)----C/C++中用Lua函数

本文介绍了如何在C或C++中调用由Lua定义的函数,详细阐述了参数、返回值和全局变量的使用。通过示例代码展示了如何在Lua中定义函数,并在C++中调用,以及如何处理返回值和全局变量。
摘要由CSDN通过智能技术生成

1.简介

  偶们这次主要说说怎么由Lua定义函数, 然后在C或者C++中调用. 这里偶们暂不涉及C++的对象问题, 只讨论调用函数的参数, 返回值和全局变量的使用.

  2.

  这里偶们在e12.lua里先定义一个简单的add(), x,y为加法的两个参数,return 直接返回相加后的结果.

  例e12.lua

  
  
  
   -- add two numbers   function add ( x, y )    return x + y   end

  在前一次里, 偶们说到 lua_dofile() 可以直接在C中执行lua文件. 因为偶们这个程序里只定义了一个add()函数, 所以程序执行后并不直接结果, 效果相当于在C中定义了一个函数一样.

  Lua的函数可以有多个参数, 也可以有多个返回值, 这都是由栈(stack)实现的.需要调用一个函数时, 就把这个函数压入栈, 然后顺序压入所有参数, 然后用lua_call()调用这个函数. 函数返回后, 返回值也是存放在栈中. 这个过程和汇编执行函数调用的过程是一样的.

  例e13.cpp 是一个调用上面的Lua函数的例子

  
  
  
  #include    extern " C " { // 这是个C++程序, 所以要extern "C",    // 因为lua的头文件都是C格式的 </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值