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

首頁 > 開發 > 綜合 > 正文

C++中調用Lua配置文件和響應函數示例

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

Lua是腳本語言,最大的優勢就是輕巧靈便,不用編譯。當C的框架寫好,只要更改lua的相應處理即可以更改功能,并且不用重新編譯。以下是在C中調用Lua資源方法的示例程序:
 
C++端:

// Lua1.cpp : 定義控制臺應用程序的入口點。 //  #include "stdafx.h" #include<stdio.h>  extern "C" { //如不用extern會出現連接錯誤,編譯成了C++文件 #include <lua.h> #include <lualib.h> #include <lauxlib.h> }   void load (lua_State *L,int *width,int *height){   lua_getglobal(L,"width");  //獲得Lua中變量的值,將其放入棧中   lua_getglobal(L,"height");    if(!lua_isnumber(L,-2))   //棧頂為-1,然后依次減少     luaL_error(L,"`width' should be a number/n");    if(!lua_isnumber(L,-1))     luaL_error(L,"`height' should be a number/n");   *width = (int)lua_tonumber(L,-2);  //將棧頂元素轉化為數字   *height = (int)lua_tonumber(L,-1); }  int add(lua_State *L,int a, int b){    int sum=0;   lua_getglobal(L,"add");  //函數也是變量,所以一個取法   lua_pushnumber(L,a);   //將變量傳入   lua_pushnumber(L,b);       //第二個參數為調用函數的參數的個數,第三個為返回值的個數,第四個參數是錯誤處理函數,正常運行返回0   if(lua_pcall(L,2,1,0) != 0){       luaL_error(L,"the lua load error! %s",lua_tostring(L,-1));   }      //函數的返回值已經傳入棧中   if(!lua_isnumber(L,-1)){      luaL_error(L,"the func run error! %s",lua_tostring(L,-1));   }    sum = (int)lua_tonumber(L,-1); //取棧頂元素將其轉為數字,默認為double型    lua_pop(L,1)    //將return元素移除   return sum; }  int get_num(lua_State *L){      lua_getglobal(L,"roll_num");   if(lua_pcall(L,0,1,0) != 0){     luaL_error(L,"the lua load error! %s",lua_tostring(L,-1));   }    if(!lua_isnumber(L,-1)){     luaL_error(L,"the func run error! %s",lua_tostring(L,-1));   }    int n = (int)lua_tonumber(L,-1);   lua_pop(L,1);   return n; } int _tmain(int argc, _TCHAR* argv[]) {   lua_State *L = lua_open();   luaL_openlibs(L); //新版本庫添加的方法   if(luaL_loadfile(L,"cof.lua") || lua_pcall(L,0,0,0)){     luaL_error(L,"loadfile error! %s /n",lua_tostring(L,-1));   }    int w=1,h=2;   int sum;   load(L,&w,&h);   printf("width is %d ,height is %d/n",w,h);   sum=add(L,w,h);   printf("the sum is: %d /n",sum);         bool flag = true;   char c;   while(flag){     printf("Do you want to roll the number? /n");     scanf("%c",&c);     if(c == 'y' || c=='Y'){       printf("rolling the number..../n the num is %d /n",get_num(L));     }     else flag=false;     getchar();   }    getchar();   return 0; } 


Lua 文件:
 

-- config test  width = 200 height = 500  function add(a,b)   return a+b end  math.randomseed(os.time()) function roll_num()   return math.random(6) end 

 

 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: lutube成人福利在线观看污 | 色就操| 一级做a爰性色毛片免费 | 黄色一级视频 | av电影在线观看免费 | 一级在线免费 | 成人做爰高潮片免费视频韩国 | 中文日产幕无线码6区免费版 | 中国大陆一级毛片 | 亚洲国产美女视频 | 黄色网址在线免费 | 91精品久久久久久 | 欧美一级美国一级 | 国产精品一区二区三区在线 | 久久久久免费精品国产小说色大师 | 香蕉久久久 | 久久久久久久久亚洲精品 | 高清在线国产 | 色综合久久久久久久久久 | 国产精品久久久久一区二区 | 久久久久久久久久综合 | 欧美毛片 | 国产va在线观看免费 | 亚洲国产女同久久 | 一级黄色免费观看视频 | 免费在线观看亚洲 | 亚洲狠狠入 | 99国产精品国产免费观看 | 久草在线观看首页 | 欧美一级欧美 | 激情在线视频 | 国产真实孩交 | 日本精品中文字幕 | 日韩视频在线观看免费视频 | 亚洲成人激情av | 亚洲免费网站 | 免费看黄色一级大片 | 精品91av | 久久久www成人免费精品 | 黄色大片免费看 | 污在线观看网站 |