欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C/C++中怎么用Lua函數(shù)

本篇內(nèi)容介紹了“C/C++中怎么用Lua函數(shù)”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)公司專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、右玉網(wǎng)絡(luò)推廣、成都小程序開(kāi)發(fā)、右玉網(wǎng)絡(luò)營(yíng)銷(xiāo)、右玉企業(yè)策劃、右玉品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供右玉建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:aaarwkj.com

1.簡(jiǎn)介

偶們這次主要說(shuō)說(shuō)怎么由Lua定義函數(shù), 然后在C或者C++中調(diào)用. 這里偶們暫不涉及C++的對(duì)象問(wèn)題, 只討論調(diào)用函數(shù)的參數(shù), 返回值和全局變量的使用.

2.

這里偶們?cè)趀12.lua里先定義一個(gè)簡(jiǎn)單的add(), x,y為加法的兩個(gè)參數(shù),return 直接返回相加后的結(jié)果.

例e12.lua

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

在前一次里, 偶們說(shuō)到 lua_dofile() 可以直接在C中執(zhí)行l(wèi)ua文件. 因?yàn)榕紓冞@個(gè)程序里只定義了一個(gè)add()函數(shù), 所以程序執(zhí)行后并不直接結(jié)果, 效果相當(dāng)于在C中定義了一個(gè)函數(shù)一樣.

Lua的函數(shù)可以有多個(gè)參數(shù), 也可以有多個(gè)返回值, 這都是由棧(stack)實(shí)現(xiàn)的.需要調(diào)用一個(gè)函數(shù)時(shí), 就把這個(gè)函數(shù)壓入棧,  然后順序壓入所有參數(shù), 然后用lua_call()調(diào)用這個(gè)函數(shù). 函數(shù)返回后, 返回值也是存放在棧中.  這個(gè)過(guò)程和匯編執(zhí)行函數(shù)調(diào)用的過(guò)程是一樣的.

例e13.cpp 是一個(gè)調(diào)用上面的Lua函數(shù)的例子

#include extern "C" { // 這是個(gè)C++程序, 所以要extern "C", // 因?yàn)閘ua的頭文件都是C格式的  #include "lua.h" #include "lualib.h" #include "lauxlib.h" } /* the Lua interpreter */ lua_State* L; int luaadd ( int x, int y ) { int sum; /* the function name */ lua_getglobal(L, "add"); /* the first argument */ lua_pushnumber(L, x); /* the second argument */ lua_pushnumber(L, y); /* call the function with 2 arguments, return 1 result */ lua_call(L, 2, 1); /* get the result */ sum = (int)lua_tonumber(L, -1); lua_pop(L, 1); return sum; } int main ( int argc, char *argv[] ) { int sum; /* initialize Lua */ L = lua_open(); /* load Lua base libraries */ lua_baselibopen(L); /* load the script */ lua_dofile(L, "e12.lua"); /* call the add function */ sum = luaadd( 10, 15 ); /* print the result */ printf( "The sum is %d\n", sum ); /* cleanup Lua */ lua_close(L); return 0; }

程序說(shuō)明:

main中過(guò)程偶們上次已經(jīng)說(shuō)過(guò)了, 所以這次只說(shuō)說(shuō)luaadd的過(guò)程

* 首先用lua_getglobal()把a(bǔ)dd函數(shù)壓棧

* 然后用lua_pushnumber()依次把x,y壓棧

* 然后調(diào)用lua_call(), 并且告訴程序偶們有兩個(gè)參數(shù)一個(gè)返回值

* 接著偶們從棧頂取回返回值, 用lua_tonumber()

* ***偶們用lua_pop()把返回值清掉

運(yùn)行結(jié)果:

The sum is 25

編譯方法

Linux下把程序存成e13.cpp

g++ e13.cpp -llua -llualib -o e13

./e13

VC下編譯方法

* 首先建立一個(gè)空的Win32 Console Application Project

* 把e13.cpp加入工程中

* 點(diǎn)project setting,然后設(shè)置link選項(xiàng), 再加上lua.lib lualib.lib兩個(gè)額外的庫(kù)

3.全局變量

上面偶們用到了lua_getglobal()但并沒(méi)有詳細(xì)講, 這里偶們?cè)倥e兩個(gè)小例子來(lái)說(shuō)下全局變量

lua_getglobal()的作用就是把lua中全局變量的值壓入棧

lua_getglobal(L, "z");

z = (int)lua_tonumber(L, 1);

lua_pop(L, 1);

假設(shè)Lua程序中定義了一個(gè)全局變量z, 這段小程序就是把z的值取出放入C的變量z中.

另外Lua中還有一個(gè)對(duì)應(yīng)的函數(shù)lua_setglobal(), 作用是用棧頂?shù)闹堤畛渲付ǖ娜肿兞?/p>

lua_pushnumber(L, 10);

lua_setglobal(L, "z");

例如這段小程序就是把lua中的全局變量z設(shè)為10, 如果lua中未定義z的話(huà), 就會(huì)自動(dòng)創(chuàng)建一個(gè)

全局變量z并設(shè)為10.

“C/C++中怎么用Lua函數(shù)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

網(wǎng)頁(yè)題目:C/C++中怎么用Lua函數(shù)
本文鏈接:http://aaarwkj.com/article38/pdehpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站維護(hù)、域名注冊(cè)定制網(wǎng)站、靜態(tài)網(wǎng)站、App開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)
一区二区三区四区中文在线| 欧美日韩久久久久久精品| 清纯美女爱爱高潮av| av影片免费网址大全| 日本午夜诱惑在线观看| 亚洲一区精品中文字幕| 中文字幕你懂的在线观看| 久久国产精品一区二区三区| 国产三级视频网站在线观看| 亚洲视频精品一区二区三区| 精品国产三级a在线观看网站| 国产精品国产三级国av中文| 一区二区三区四区中文在线| 亚洲av乱码一区二区三区观影| 精品久久人妻中文字幕免费| 人体艺术日韩色噜噜| 午夜视频在线播放一区二区三区| 漂亮人妻中文字幕av| 日本熟女肥臀一区二区| 久久96国产精品久久秘臀| 国产在线91精品入口| 国产三级在线播放完整| 五月天久久开心激情网| 婷婷色综合一区二区三区| 美女黄色午夜福利网站| 欧美日韩黄色人人小视频| 久久日韩制服丝袜人妻| av久久精品在线观看| 四虎在线永久观看视频| 亚洲精品一区二区免费看| 一区二区高清免费日本| 日本免费播放一区二区视频| 久久人妻蜜桃一区二区三区| 亚洲欧美激情啪啪啪| 我的农村中年激情熟妇| 剧情av一区二区在线| 可以看的黄色亚洲网站| 粉嫩极品国产在线观看| av天堂男人站在线观看| 免费观看黄片视频在线观看| 亚洲精品一区二区99|