佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > C語言中調(diào)用Lua函數(shù)實(shí)例

C語言中調(diào)用Lua函數(shù)實(shí)例

熱門標(biāo)簽:呼叫中心市場需求 百度競價(jià)排名 AI電銷 服務(wù)外包 網(wǎng)站排名優(yōu)化 地方門戶網(wǎng)站 鐵路電話系統(tǒng) Linux服務(wù)器

記得上學(xué)時(shí),初中英文課本中,上網(wǎng)叫做surfing the internet,中文叫網(wǎng)上沖浪。那個(gè)時(shí)期,人們經(jīng)常稱互聯(lián)網(wǎng)為賽博空間。如今工作了,大量的零碎時(shí)間用于上微博,知乎,QQ,這些碎片化的閱讀讓人讀起來輕松,也能獲取些粗淺的信息。然而它們是消耗時(shí)間的黑洞,時(shí)間就這樣一分一秒地飛逝,年末的時(shí)候,知乎會(huì)告訴你回答了多少問題,閱讀了相當(dāng)于一部《紅樓夢》那么多的文字。只是當(dāng)你靜下來一想,這些淺閱讀并沒給你帶來有深度,系統(tǒng)的知識。在你的時(shí)間線上,兩條相鄰信息往往是八竿子也打不著的。而且你還時(shí)不時(shí)去看看關(guān)注者有沒有更新,期待讓你眼前一亮的信息。結(jié)果往往是趁興而去,敗興而回。屏幕上的信息永無止境地滾動(dòng)著,是如此的熱鬧,仿佛每個(gè)人都在狂歡,而我的內(nèi)心卻如此的空虛與孤獨(dú)。

在lua API中,調(diào)用一個(gè)函數(shù)的步驟很簡單:

1.壓入你要調(diào)用的函數(shù),使用lua_getglobal。
2.壓入調(diào)用參數(shù)。
3.使用lua_pcall
4.從棧中彈出結(jié)果。

舉例說明,假設(shè)你有這么一個(gè)lua函數(shù):

復(fù)制代碼 代碼如下:

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

那么,我們就可以定義個(gè)c函數(shù)來封裝這個(gè)調(diào)用:
復(fù)制代碼 代碼如下:

/* 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在壓入結(jié)果的之前,會(huì)將函數(shù),和參數(shù)彈出,如果返回多個(gè)結(jié)果,第一個(gè)最先壓入。如果lua_pcall運(yùn)行出錯(cuò),那么會(huì)返回個(gè)非0值。
(完)

您可能感興趣的文章:
  • Lua教程(二十):Lua調(diào)用C函數(shù)
  • Lua教程(四):在Lua中調(diào)用C語言、C++的函數(shù)
  • Lua教程(三):C語言、C++中調(diào)用Lua的Table示例
  • C++中調(diào)用Lua函數(shù)實(shí)例
  • Lua中調(diào)用C++函數(shù)實(shí)例
  • Lua調(diào)用自定義C模塊
  • Lua中調(diào)用C語言函數(shù)實(shí)例
  • Lua教程(十九):C調(diào)用Lua
  • Lua編程示例(六): C語言調(diào)用Lua函數(shù)
  • C語言與Lua之間的相互調(diào)用詳解

標(biāo)簽:湘潭 蘭州 黃山 衡水 銅川 湖南 崇左 仙桃

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《C語言中調(diào)用Lua函數(shù)實(shí)例》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    绥棱县| 石首市| 长岛县| 沛县| 姜堰市| 忻城县| 武平县| 遂川县| 宜丰县| 壤塘县| 淮南市| 通榆县| 邛崃市| 宝山区| 马关县| 农安县| 汉川市| 博乐市| 南充市| 石景山区| 筠连县| 淄博市| 新闻| 苏州市| 武穴市| 海晏县| 武川县| 弥勒县| 乌鲁木齐市| 永吉县| 庆安县| 桂平市| 延长县| 五河县| 内江市| 中阳县| 临桂县| 民和| 化隆| 成安县| 枞阳县|