从零开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
热搜: C++
查看: 1897|回复: 1

c++调用大漠系列:LUA给C++传递参数

[复制链接]
  • TA的每日心情
    郁闷
    2019-9-30 18:03
  • 签到天数: 33 天

    [LV.5]常住居民I

    25

    主题

    62

    帖子

    7576

    积分

    VIP会员

    Rank: 10Rank: 10Rank: 10

    积分
    7576
    发表于 2018-10-7 10:53:16 | 显示全部楼层 |阅读模式
    本帖最后由 1149 于 2018-10-7 11:19 编辑

    1,传递普通类型参数
    [mw_shl_code=cpp,true]int test(lua_State* lua)
    {
            const char* str = lua_tostring(lua, 1);//从栈底取出一个值,double类型也会被转为字符串
            printf("%s\n", str);
            return 0;
    }[/mw_shl_code]


    2,传递数组
    [mw_shl_code=cpp,true]int test(lua_State* lua)
    {
            int len = lua_objlen(lua, 1);//咱们只有一个参数,所以我们的数组是在栈底
            for (int i = 1 ; i <= len ; i++)
            {
                    lua_pushnumber(lua, i);//lua的数组起始是从1开始,所以咱们把数组下标压入栈顶,push i
                    lua_gettable(lua, 1);//这个函数的动作:pop 栈顶取出下标,push arr , 这个时候 , arr的值在栈顶
                    const char* str = lua_tolstring(lua, -1, 0);//取出栈顶的值
                    lua_pop(lua, 1);//出栈一个元素,恢复初始状态
                    printf("%s\n", str);
            }
            
            return 0;
    }[/mw_shl_code]


    3,传递表参数
    [mw_shl_code=cpp,true]int test(lua_State* lua)
    {
            lua_pushnil(lua);//push nil,这时候栈里有2个元素
            while (lua_next(lua , 1))//从栈顶弹出一个键值,并push -1处的下个键值,push 对应键的值,这时候有3个元素
            {
                    const char* str = lua_tolstring(lua, -1, 0);//取出栈顶元素
                    printf("%s\n" , str);
                    lua_pop(lua, 1);//恢复堆栈
            }
           
            return 0;
    }[/mw_shl_code]

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    5 天前
  • 签到天数: 147 天

    [LV.7]常住居民III

    172

    主题

    473

    帖子

    36万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    360285
    QQ
    发表于 2018-10-7 19:52:51 | 显示全部楼层
    强烈的支持。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|手机版|Archiver|一切从零开始 ( 蜀ICP备15031375号-3 )

    GMT+8, 2024-5-19 09:53 , Processed in 0.972713 second(s), 10 queries , File On.

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表