C语言中调用Lua函数实例
记得上学时,初中英文课本中,上网叫做surfingtheinternet,中文叫网上冲浪。那个时期,人们经常称互联网为赛博空间。如今工作了,大量的零碎时间用于上微博,知乎,QQ,这些碎片化的阅读让人读起来轻松,也能获取些粗浅的信息。然而它们是消耗时间的黑洞,时间就这样一分一秒地飞逝,年末的时候,知乎会告诉你回答了多少问题,阅读了相当于一部《红楼梦》那么多的文字。只是当你静下来一想,这些浅阅读并没给你带来有深度,系统的知识。在你的时间线上,两条相邻信息往往是八竿子也打不着的。而且你还时不时去看看关注者有没有更新,期待让你眼前一亮的信息。结果往往是趁兴而去,败兴而回。屏幕上的信息永无止境地滚动着,是如此的热闹,仿佛每个人都在狂欢,而我的内心却如此的空虚与孤独。
在luaAPI中,调用一个函数的步骤很简单:
1.压入你要调用的函数,使用lua_getglobal。
2.压入调用参数。
3.使用lua_pcall
4.从栈中弹出结果。
举例说明,假设你有这么一个lua函数:
functionf(x,y)
return(x^2*math.sin(y))/(1-x)
end
那么,我们就可以定义个c函数来封装这个调用:
/*callafunction'f'definedinLua*/
doublef(doublex,doubley)
{
doublez;
lua_getglobal(L,"f");
lua_pushnumber(L,x);
lua_pushnumber(L,y);
/*dothecall(2arguments,1result)*/
if(lua_pcall(L,2,1,0)!=0)
error(L,"errorrunningfunction'f':%s",
lua_tostring(L,-1));
if(!lua_isnumber(L,-1)) error(L,"function'f'mustreturnanumber"); z=lua_tonumber(L,-1); lua_pop(L,1); returnz; }
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短