欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

// Lua1.cpp : 定義控制臺應用程序的入口點。 
// 
 
#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);  //將棧頂元素轉化為數(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ù)為調用函數(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); //取棧頂元素將其轉為數(shù)字,默認為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 


相關文章

  • Lua入門學習筆記

    Lua入門學習筆記

    這篇文章主要介紹了Lua入門學習筆記,本文適合有一定編程基礎的同學,可以依據(jù)本文快速入門Lua腳本語言,需要的朋友可以參考下
    2014-10-10
  • Lua中使用元表(metatable)執(zhí)行算術類元方法實例

    Lua中使用元表(metatable)執(zhí)行算術類元方法實例

    這篇文章主要介紹了Lua中使用元表(metatable)執(zhí)行算術類元方法實例,本文給出了加法、減法、乘法、除法、相反數(shù)、取模等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • C++遍歷Lua table的方法實例

    C++遍歷Lua table的方法實例

    這篇文章主要介紹了C++遍歷Lua table的方法實例,本文給出了Lua table數(shù)據(jù)格式、C++實現(xiàn)的遍歷代碼以及輸出效果,需要的朋友可以參考下
    2015-04-04
  • 淺談chuck-lua中的多線程

    淺談chuck-lua中的多線程

    Lua對多線程支持初步體驗是本文要介紹的內(nèi)容,主要是來了解LUA中多線程的使用,,經(jīng)過反復的實驗得到的結果是,lua不支持多線程,如何讓它支持?來看本文內(nèi)容。
    2015-07-07
  • Lua中的捕獲機制和轉換技巧介紹

    Lua中的捕獲機制和轉換技巧介紹

    這篇文章主要介紹了Lua中的捕獲機制和轉換技巧介紹,捕獲是這樣一種機制:可以使用模式串的一部分匹配目標串的一部分,將你想捕獲的模式用圓括號括起來,就指定了一個捕獲,需要的朋友可以參考下
    2014-11-11
  • 使用Lua編寫Nginx服務器的認證模塊的方法

    使用Lua編寫Nginx服務器的認證模塊的方法

    這篇文章主要介紹了使用Lua編寫Nginx服務器的認證模塊的方法,即諸如當今流行的社交應用接入等功能,需要的朋友可以參考下
    2015-06-06
  • Lua中的__index方法詳解

    Lua中的__index方法詳解

    這篇文章主要介紹了Lua中的__index方法詳解,本文詳細講解了__index方法的相關知識,以及代碼示例,需要的朋友可以參考下
    2015-04-04
  • Lua教程(二十二):userdata

    Lua教程(二十二):userdata

    這篇文章主要介紹了Lua教程(二十二):userdata,這里我們通過一個簡單完整的示例來學習一下Lua中userdata的使用方式,需要的朋友可以參考下
    2015-04-04
  • 簡單的Lua 連接操作mysql數(shù)據(jù)庫的方法

    簡單的Lua 連接操作mysql數(shù)據(jù)庫的方法

    lua連接數(shù)據(jù)庫不只luasql這個庫,但目前更新最快的的貌似是這個luasql,他是開源的,下面我們就來看看如何來具體操作吧
    2015-10-10
  • 簡單講解Lua中的垃圾回收機制

    簡單講解Lua中的垃圾回收機制

    這篇文章主要介紹了Lua中的垃圾回收機制,自動的垃圾回收是Lua的重要特性之一,需要的朋友可以參考下
    2015-05-05

最新評論