相关文章  
  • Linux实用管理技巧小集
  • Linux中的两个问题及目录组织
  • 让Linux应用更加得心应手的20招
  • Emacs日程安排及calendar使用方法
  • 使用Lua编写可嵌入式脚本之三
  • 使用Lua编写可嵌入式脚本之二
  • 使用Lua编写可嵌入式脚本之一
  • GRUB引导进单用户模式的三种方式 下
  • linux启动全接触
  • Linux开机程序内幕(1)
  •   推荐  
      科普之友首页   专利     科普      动物      植物        天文   考古   前沿科技
     您现在的位置在:  首页 >>文献 >>培训

    使用Lua编写可嵌入式脚本之四6

    符串,打印消息,然后从堆栈中删除该值。

      使用 C API,我们的应用程序也可以进入 Lua 状态来提取信息。下面的代码片段从 Lua 状态中提取两个全局变量:

    ..
    if (luaL_loadfile(L, filename) || lua_pcall(L, 0, 0, 0))
      error(L, "cannot run configuration file: %s", lua_tostring(L, -1));

    lua_getglobal(L, "width");
    lua_getglobal(L, "height");
    ..
    width = (int) lua_tonumber(L, -2);
    height = (int) lua_tonumber(L, -1);
    ..

      请再次注意传输是通过堆栈进行的。从 C 中调用任何 Lua 函数与这段代码类似:使用 lua_getglobal() 来获得函数,将参数压入堆栈,调用 lua_pcall(),然后处理结果。如果 Lua 函数返回 n 个值,那么第一个值的位置在堆栈的 -n 处,最后一个值在堆栈中的位置是 -1。

      反之,在 Lua 中调用 C 函数也与之类似。如果您的操作系统支持动态加载,那么 Lua 可以根据需要来动态加载并调用函数。(在必须使用静态加载的操作系统中,可以对 Lua 引擎进行扩充,此时调用 C 函数时需要重新编译 Lua。)


      结束语

      Lua 是一种学习起来容易得难以置信的语言,但是它简单的语法却掩饰不了其强大的功能:这种语言支持对象(这与 Perl 类似),元表使表类型具有相当程度的可伸展性,C API 允许我们在脚本和宿主语言

    页码:[1] [2] [3] [4] [5] [6] [7]6页、共7页

         

          设为首页       |       加入收藏       |       广告服务       |       友情链接       |       版权申明      

    Copyriht 2007 - 2008 ©  科普之友 All right reserved