国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

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

2024-07-21 23:04:58
字體:
供稿:網(wǎng)友

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

2.在for循環(huán)中計算所有參數(shù)之和。
3.調(diào)用lua_pushnumber()將參數(shù)的平均值壓棧。 
4.最后,函數(shù)返回1,說明有一個返回值在棧中。
現(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會出現(xiàn)連接錯誤,編譯成了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)) 

運行程序即可實現(xiàn)求平均數(shù)的功能
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 钟祥市| 恭城| 太保市| 皋兰县| 安图县| 大埔县| 榆树市| 宜宾市| 洞头县| 耒阳市| 浪卡子县| 三河市| 兴城市| 东至县| 上饶县| 庆云县| 临沂市| 噶尔县| 商丘市| 改则县| 舟山市| 化隆| 琼海市| 安吉县| 滕州市| 玛多县| 马鞍山市| 辰溪县| 丰原市| 建宁县| 建阳市| 文成县| 辽源市| 佛教| 花莲市| 临武县| 五大连池市| 台江县| 威信县| 醴陵市| 东乡族自治县|