美文网首页
luaL_newlib不同版本的区别

luaL_newlib不同版本的区别

作者: 所以现在就 | 来源:发表于2018-09-12 12:00 被阅读0次

    由于cocos2dx-lua是用的lua5.1版本,所以有些lua函数有些不同luaL_newlib

    内容如下

    int luaopen_libname(lua_State *L)

    {

        static const luaL_Reg funcs[] = {

    {"func1", func1},

            {"func2", func2},

    {NULL, NULL}

        };

    #ifdef lua5.1

    //5.1 下直接使用luaL_register 就好

        luaL_register(L, "libname", funcs);

    #else //lua5.2

        lua_newtable(L);

        //先把一个table压入VS,然后在调用luaL_setfuncs就会把所以的func存到table中

        //注意不像luaL_register这个table是个无名table,可以在的使用只用一个变量来存入这个table。

        //e.g local clib = require "libname". 这样就不会污染全局环境。比luaL_register更好。

        luaL_setfuncs(L, funcs, 0);

    #endif

        return 1;  //返回table

    }

    #if LUA_VERSION_NUM < 502

    #define luaL_newlib(L,l) (lua_newtable(L), luaL_register(L,NULL,l))

    #endif

    或者

    #if (LUA_VERSION_NUM == 501)

    #define luaL_setfuncs(L,f,n) luaL_register(L,NULL,f)

    #define luaL_newlib(L,f) luaL_register(L,"lpeg",f)

    #endif

    相关文章

      网友评论

          本文标题:luaL_newlib不同版本的区别

          本文链接:https://www.haomeiwen.com/subject/epkvgftx.html