最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Lua中調(diào)用C++函數(shù)示例

 更新時(shí)間:2015年07月09日 09:49:09   投稿:junjie  
這篇文章主要介紹了Lua中調(diào)用C++函數(shù)示例,本文給出的C++函數(shù)average()演示了如何接受多個(gè)參數(shù)且返回超過一個(gè)值,需要的朋友可以參考下

Lua當(dāng)然也能夠調(diào)用C中定義的函數(shù)。一個(gè)平均數(shù)的例子,解釋一下。
  
下面給出的C++函數(shù)average()演示了如何接受多個(gè)參數(shù)且返回超過一個(gè)值。
1.lua_gettop函數(shù)返回棧頂?shù)乃饕?。因?yàn)樵贚ua中棧是從1開始編號的,因此該函數(shù)獲得的值就是參數(shù)的個(gè)數(shù)。

2.在for循環(huán)中計(jì)算所有參數(shù)之和。
3.調(diào)用lua_pushnumber()將參數(shù)的平均值壓棧。 
4.最后,函數(shù)返回1,說明有一個(gè)返回值在棧中。
現(xiàn)在C++函數(shù)已經(jīng)被定義好了,我們必須將它告訴Lua解釋器。這將在main函數(shù)中初始化Lua解釋器和載入庫完成之后完成注冊函數(shù):

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

lua_register(L, "avg", average);  //第二參數(shù)為Lua中調(diào)用的函數(shù)名 

 
C++端:
 

#include "stdafx.h" 
#include<stdio.h> 
 
extern "C" { //如不用extern會(huì)出現(xiàn)連接錯(cuò)誤,編譯成了C++文件 
#include <lua.h> 
#include <lualib.h> 
#include <lauxlib.h> 
} 
 
int average(lua_State *L){ 
 int n= lua_gettop(L); 
 int i; 
 double sum=0; 
 for(i=0;i<n;i++){ 
  sum+=lua_tonumber(L,-1); 
  lua_pop(L,1); 
 } 
 lua_pushnumber(L,sum/n); 
 if(!lua_isnumber(L,-1)) 
  luaL_error(L,"push error!\n"); 
 return 1; 
} 
 
int _tmain(int argc, _TCHAR* argv[]) 
{ 
 lua_State* L = lua_open(); 
 luaL_openlibs(L); //新版本庫添加的方法 
 
 lua_register(L,"avg",average); 
 luaL_dofile(L,"cof.lua"); 
 
 getchar(); 
 return 0; 
} 

Lua文件:

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

print("avg is ",avg(1,2,3,4,5,6,7,8)) 

運(yùn)行程序即可實(shí)現(xiàn)求平均數(shù)的功能

相關(guān)文章

最新評論

资源县| 景谷| 丹凤县| 仁怀市| 乐昌市| 太康县| 鄂托克旗| 陆良县| 温泉县| 买车| 紫云| 克什克腾旗| 玉门市| 铁岭县| 政和县| 凌云县| 炎陵县| 黄梅县| 石河子市| 辽源市| 边坝县| 武功县| 罗平县| 湖州市| 德惠市| 昭苏县| 北海市| 宁德市| 栾城县| 忻州市| 富顺县| 衡东县| 和政县| 青川县| 沂源县| 临汾市| 丰都县| 离岛区| 福鼎市| 兴山县| 涞水县|