麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 綜合 > 正文

Lua中調用C++函數示例

2024-07-21 23:04:58
字體:
來源:轉載
供稿:網友

Lua當然也能夠調用C中定義的函數。一個平均數的例子,解釋一下。
  
下面給出的C++函數average()演示了如何接受多個參數且返回超過一個值。
1.lua_gettop函數返回棧頂的索引值。因為在Lua中棧是從1開始編號的,因此該函數獲得的值就是參數的個數。

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

復制代碼 代碼如下:

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

 
C++端:
 

 

#include "stdafx.h" #include<stdio.h>  extern "C" { //如不用extern會出現連接錯誤,編譯成了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文件:

復制代碼 代碼如下:

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

運行程序即可實現求平均數的功能
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 最新午夜综合福利视频 | 欧美一级视频免费看 | 免费激情网站 | 免费网站看毛片 | 亚洲影视在线 | 欧美精品免费一区二区三区 | 欧美一区二区三区久久精品视 | 久久免费激情视频 | 国产精品视频一区二区三区综合 | 久久6国产 | 亚洲3atv精品一区二区三区 | 国产精品久久久久久影视 | 国产精品剧情一区二区在线观看 | 日韩视频一区二区在线观看 | 国产一区视频在线观看免费 | 国产一国产一级毛片视频在线 | av免费大全| 欧美一区二区三区久久精品视 | 国产精品热 | 久久免费视频精品 | 亚洲精品成人18久久久久 | 国产精品久久久久久久久久 | 精品一区二区久久久久久久网精 | 污在线观看网站 | 精品亚洲二区 | 日本在线国产 | 国产自在线| 一边吃奶一边插下面 | 国产高潮好爽好大受不了了 | 泰剧19禁啪啪无遮挡 | 欧美成年人视频在线观看 | 精品1 | 成人福利视频在线 | 日韩黄色免费在线观看 | 精品一区二区免费 | 欧美亚洲一区二区三区四区 | 日韩毛片网 | 狠狠一区二区 | 一级黄色影片在线观看 | 色就色 综合偷拍区91网 | 久久精品国产精品亚洲 |