欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用Lua作为C语言项目的配置文件实例

程序员文章站 2022-07-05 11:06:59
想像一个场景:你的c程序需要有一个窗口,你想让用户可以自定义窗口大小。方法很多,比如使用环境变量,或键值对的文件。不管怎样,你需要解析它。使用lua配置文件是个不错的选择。...

想像一个场景:你的c程序需要有一个窗口,你想让用户可以自定义窗口大小。方法很多,比如使用环境变量,或键值对的文件。不管怎样,你需要解析它。使用lua配置文件是个不错的选择。

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

复制代码 代码如下:

--define window size
width = 100
height = 50

然后,我们写个函数来解析它,使用lua api 来指导lua解析配置。,下面是完整的程序:
复制代码 代码如下:

#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为你处理了所有语法细节(包括错误)
2.配置内容可读性好,甚至你可以写上注释。
3.可以很容易添加新的配置信息。
(完)