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

使用Lua作為C語(yǔ)言項(xiàng)目的配置文件實(shí)例

 更新時(shí)間:2015年04月23日 10:19:26   投稿:junjie  
這篇文章主要介紹了使用Lua作為C語(yǔ)言項(xiàng)目的配置文件實(shí)例,本文用Lua創(chuàng)建了一個(gè)配置文件,然后在C言語(yǔ)中解析它,需要的朋友可以參考下

想像一個(gè)場(chǎng)景:你的c程序需要有一個(gè)窗口,你想讓用戶可以自定義窗口大小。方法很多,比如使用環(huán)境變量,或鍵值對(duì)的文件。不管怎樣,你需要解析它。使用lua配置文件是個(gè)不錯(cuò)的選擇。

首先,你可以定義如下的配置文件:

復(fù)制代碼 代碼如下:

--define window size
width = 100
height = 50

然后,我們寫個(gè)函數(shù)來(lái)解析它,使用lua API 來(lái)指導(dǎo)lua解析配置。,下面是完整的程序:
復(fù)制代碼 代碼如下:

#include <stdio.h>
#include <string.h>
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>

void load(lua_State* L, const char* fname, int *w, int *h)
{
     if (luaL_loadfile(L, fname) || lua_pcall(L, 0, 0, 0)) {
          error(L, "error:%s", lua_tostring(L, -1));
     }
     lua_getglobal(L, "width");
     lua_getglobal(L, "height");
     if (!lua_isnumber(L, -2)) {
          error(L, "width shuld be num.");
     }
     if (!lua_isnumber(L, -1)) {
          error(L, "height shuld be num");
     }
     *w = lua_tointeger(L, -2);
     *h = lua_tointeger(L, -1);
}

int main()
{
     lua_State *L = luaL_newstate();
     luaL_openlibs(L);
     int w, h;
     load(L, "config", &w, &h);
     printf("%d,%d", w, h);
     return 0;
}


使用lua配置文件有什么好處呢?我想,大概有以下理由:
1.Lua為你處理了所有語(yǔ)法細(xì)節(jié)(包括錯(cuò)誤)
2.配置內(nèi)容可讀性好,甚至你可以寫上注釋。
3.可以很容易添加新的配置信息。
(完)

相關(guān)文章

  • 詳解Lua中if ... else語(yǔ)句的使用方法

    詳解Lua中if ... else語(yǔ)句的使用方法

    這篇文章主要介紹了詳解Lua中if ... else語(yǔ)句的使用方法,是Lua入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • Lua教程(十一):模塊與包詳解

    Lua教程(十一):模塊與包詳解

    這篇文章主要介紹了Lua教程(十一):模塊與包詳解,本文講解了require函數(shù)、 編寫模塊的基本方法、使用環(huán)境、module函數(shù)等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • 如何使用Vim搭建Lua開(kāi)發(fā)環(huán)境詳解

    如何使用Vim搭建Lua開(kāi)發(fā)環(huán)境詳解

    這篇文章主要給大家介紹了關(guān)于如何使用Vim搭建Lua開(kāi)發(fā)環(huán)境的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Lua模塊與包學(xué)習(xí)筆記

    Lua模塊與包學(xué)習(xí)筆記

    這篇文章主要介紹了Lua模塊與包學(xué)習(xí)筆記,本文講解了加載模塊、加載機(jī)制等內(nèi)容,需要的朋友可以參考下
    2014-12-12
  • 舉例詳解Lua中的協(xié)同程序編程

    舉例詳解Lua中的協(xié)同程序編程

    這篇文章主要介紹了Lua中的協(xié)同程序編程,是Lua入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • 在Mac OS中安裝Lua的教程

    在Mac OS中安裝Lua的教程

    這篇文章主要介紹了在Mac OS中安裝Lua的教程,盡管基于Unix的Mac OS并沒(méi)有集成Lua解釋器,但安裝起來(lái)依然super easy:)需要的朋友可以參考下
    2015-07-07
  • Lua判斷字符串前綴是否為指定字符的3種方法

    Lua判斷字符串前綴是否為指定字符的3種方法

    這篇文章主要介紹了Lua判斷字符串前綴是否為指定字符的3種方法,本文還對(duì)三種方法分別做了性能測(cè)試,需要的朋友可以參考下
    2015-04-04
  • 簡(jiǎn)單的Lua 連接操作mysql數(shù)據(jù)庫(kù)的方法

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

    lua連接數(shù)據(jù)庫(kù)不只luasql這個(gè)庫(kù),但目前更新最快的的貌似是這個(gè)luasql,他是開(kāi)源的,下面我們就來(lái)看看如何來(lái)具體操作吧
    2015-10-10
  • lua開(kāi)發(fā)中實(shí)現(xiàn)MVC框架的簡(jiǎn)單應(yīng)用

    lua開(kāi)發(fā)中實(shí)現(xiàn)MVC框架的簡(jiǎn)單應(yīng)用

    最近的游戲項(xiàng)目中使用了lua腳本來(lái)開(kāi)發(fā),項(xiàng)目中用到了MVC框架,最近有朋友問(wèn)我怎么弄,在這里簡(jiǎn)單分享一下思路和一些開(kāi)發(fā)中的技巧。有需要的小伙伴可以參考下。
    2015-04-04
  • Lua中的一些常用函數(shù)庫(kù)實(shí)例講解

    Lua中的一些常用函數(shù)庫(kù)實(shí)例講解

    這篇文章主要介紹了Lua中的一些常用函數(shù)庫(kù)實(shí)例講解,本文講解了數(shù)學(xué)庫(kù)、table庫(kù)、字符串庫(kù)、I/O庫(kù)等常用函數(shù)庫(kù),需要的朋友可以參考下
    2014-09-09

最新評(píng)論

丽江市| 南郑县| 玉龙| 读书| 潮州市| 星子县| 辽宁省| 炎陵县| 陵水| 清水河县| 盐亭县| 康乐县| 民和| 峨山| 张家界市| 华阴市| 雅江县| 青神县| 墨竹工卡县| 彭山县| 池州市| 体育| 西宁市| 得荣县| 张家口市| 宁津县| 扎鲁特旗| 夹江县| 佛冈县| 保德县| 那曲县| 邯郸县| 巴东县| 五台县| 梧州市| 分宜县| 连州市| 漯河市| 武清区| 长岛县| 新巴尔虎左旗|