主页 > 知识库 > C语言中调用Lua函数实例

C语言中调用Lua函数实例

热门标签:地图标注大厦 清朝地图标注哈尔滨 怎么去除地图标注 冀州市地图标注 武汉外呼防封系统多少钱 漳州智云呼电话机器人 个人怎么在地图标注需要的店铺 百度地图标注早餐区域 新岸线智能电销机器人

记得上学时,初中英文课本中,上网叫做surfing the internet,中文叫网上冲浪。那个时期,人们经常称互联网为赛博空间。如今工作了,大量的零碎时间用于上微博,知乎,QQ,这些碎片化的阅读让人读起来轻松,也能获取些粗浅的信息。然而它们是消耗时间的黑洞,时间就这样一分一秒地飞逝,年末的时候,知乎会告诉你回答了多少问题,阅读了相当于一部《红楼梦》那么多的文字。只是当你静下来一想,这些浅阅读并没给你带来有深度,系统的知识。在你的时间线上,两条相邻信息往往是八竿子也打不着的。而且你还时不时去看看关注者有没有更新,期待让你眼前一亮的信息。结果往往是趁兴而去,败兴而回。屏幕上的信息永无止境地滚动着,是如此的热闹,仿佛每个人都在狂欢,而我的内心却如此的空虚与孤独。

在lua API中,调用一个函数的步骤很简单:

1.压入你要调用的函数,使用lua_getglobal。
2.压入调用参数。
3.使用lua_pcall
4.从栈中弹出结果。

举例说明,假设你有这么一个lua函数:

复制代码 代码如下:

function f (x, y)
     return (x^2 * math.sin(y))/(1 - x)
end

那么,我们就可以定义个c函数来封装这个调用:
复制代码 代码如下:

/* call a function 'f' defined in Lua */
double f (double x, double y)
{
double z;
lua_getglobal(L, "f");
lua_pushnumber(L, x);
lua_pushnumber(L, y);
/* do the call (2 arguments, 1 result) */
if (lua_pcall(L, 2, 1, 0) != 0)
     error(L, "error running function 'f': %s",
lua_tostring(L, -1));

if (!lua_isnumber(L, -1))
     error(L, "function 'f' must return a number");
z = lua_tonumber(L, -1);
lua_pop(L, 1);
return z;
}


lua_pcall在压入结果的之前,会将函数,和参数弹出,如果返回多个结果,第一个最先压入。如果lua_pcall运行出错,那么会返回个非0值。
(完)

您可能感兴趣的文章:
  • Lua教程(二十):Lua调用C函数
  • Lua教程(四):在Lua中调用C语言、C++的函数
  • Lua教程(三):C语言、C++中调用Lua的Table示例
  • C++中调用Lua函数实例
  • Lua中调用C++函数实例
  • Lua调用自定义C模块
  • Lua中调用C语言函数实例
  • Lua教程(十九):C调用Lua
  • Lua编程示例(六): C语言调用Lua函数
  • C语言与Lua之间的相互调用详解

标签:儋州 台湾 天门 宣城 金昌 潍坊 德宏 天门

巨人网络通讯声明:本文标题《C语言中调用Lua函数实例》,本文关键词  语,言中,调用,Lua,函数,实例,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《C语言中调用Lua函数实例》相关的同类信息!
  • 本页收集关于C语言中调用Lua函数实例的相关信息资讯供网民参考!
  • 推荐文章