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

C++中調(diào)用Lua配置文件和響應(yīng)函數(shù)示例

 更新時間:2015年07月09日 09:43:46   投稿:junjie  
這篇文章主要介紹了C++中調(diào)用Lua配置文件和響應(yīng)函數(shù)示例,本文使用Lua文件作為配置文件,并寫了幾個響應(yīng)函數(shù)以便在C++中使用,需要的朋友可以參考下

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

// Lua1.cpp : 定義控制臺應(yīng)用程序的入口點。 
// 
 
#include "stdafx.h" 
#include<stdio.h> 
 
extern "C" { //如不用extern會出現(xiàn)連接錯誤,編譯成了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);  //將棧頂元素轉(zhuǎn)化為數(shù)字 
  *height = (int)lua_tonumber(L,-1); 
} 
 
int add(lua_State *L,int a, int b){  
  int sum=0; 
  lua_getglobal(L,"add");  //函數(shù)也是變量,所以一個取法 
  lua_pushnumber(L,a);   //將變量傳入 
  lua_pushnumber(L,b);   
    //第二個參數(shù)為調(diào)用函數(shù)的參數(shù)的個數(shù),第三個為返回值的個數(shù),第四個參數(shù)是錯誤處理函數(shù),正常運行返回0 
  if(lua_pcall(L,2,1,0) != 0){   
    luaL_error(L,"the lua load error! %s",lua_tostring(L,-1)); 
  } 
     //函數(shù)的返回值已經(jīng)傳入棧中 
  if(!lua_isnumber(L,-1)){  
    luaL_error(L,"the func run error! %s",lua_tostring(L,-1)); 
  } 
 
  sum = (int)lua_tonumber(L,-1); //取棧頂元素將其轉(zhuǎn)為數(shù)字,默認(rèn)為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 


相關(guān)文章

  • 舉例講解Lua中的Table數(shù)據(jù)結(jié)構(gòu)

    舉例講解Lua中的Table數(shù)據(jù)結(jié)構(gòu)

    這篇文章主要介紹了舉例講解Lua中的Table數(shù)據(jù)結(jié)構(gòu),說明都融入到了注釋中,需要的朋友可以參考下
    2015-07-07
  • Lua中的元方法__newindex詳解

    Lua中的元方法__newindex詳解

    這篇文章主要介紹了Lua中的元方法__newindex詳解,本文講解了查詢與更新、監(jiān)控賦值、通過table給另一個table賦值等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • lua+love2d制作的2048游戲

    lua+love2d制作的2048游戲

    前面給大家分享的是一個超級簡單版的使用lua實現(xiàn)的2048小游戲的代碼,今天我們加上love2d游戲引擎,制作PC版的2048游戲。小伙伴們仔細讀讀本文吧。
    2015-03-03
  • Lua學(xué)習(xí)筆記之?dāng)?shù)據(jù)類型

    Lua學(xué)習(xí)筆記之?dāng)?shù)據(jù)類型

    這篇文章主要介紹了Lua學(xué)習(xí)筆記之?dāng)?shù)據(jù)類型,本文同時講解了開發(fā)環(huán)境的搭建,需要的朋友可以參考下
    2014-09-09
  • Mac平臺中編譯安裝Lua運行環(huán)境及Hello Lua實例

    Mac平臺中編譯安裝Lua運行環(huán)境及Hello Lua實例

    這篇文章主要介紹了Mac平臺中編譯安裝Lua運行環(huán)境及Hello Lua實例,本文給出了兩種Hello Lua示例,一種是控制臺直接輸出,通過文件編譯輸出,需要的朋友可以參考下
    2014-10-10
  • Lua基礎(chǔ)迭代器的使用實例

    Lua基礎(chǔ)迭代器的使用實例

    今天小編就為大家分享一篇關(guān)于Lua基礎(chǔ)迭代器的使用實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Lua獲取utf8字符串長度和字符串截取并用...代替

    Lua獲取utf8字符串長度和字符串截取并用...代替

    這篇文章主要介紹了Lua獲取utf8字符串長度和字符串截取并用...代替,本文直接給出兩個函數(shù)的實現(xiàn)代碼,需要的朋友可以參考下
    2015-04-04
  • 最新評論

    华蓥市| 调兵山市| 宜昌市| 郁南县| 类乌齐县| 富锦市| 平顺县| 金秀| 册亨县| 攀枝花市| 诸暨市| 营口市| 长阳| 巩留县| 江孜县| 广水市| 阳曲县| 巫山县| 扎兰屯市| 双桥区| 老河口市| 吐鲁番市| 湘潭市| 永新县| 嘉荫县| 盐亭县| 巨鹿县| 敦化市| 太原市| 平乡县| 犍为县| 克什克腾旗| 明光市| 南江县| 永宁县| 海南省| 申扎县| 东兰县| 新巴尔虎右旗| 常山县| 武定县|