zoukankan      html  css  js  c++  java
  • lua(简单的传参)

    #include <iostream>
    #include <string.h>
    
    extern "C"
    {
    /*头文件lua.h定义了Lua提供的基础函数,包括创建Lua环境、调用Lua函数、读写Lua环境中全局变量,以及注册供Lua调用的新函数等等*/
    #include "lua-5.2.2/src/lua.h"
    /*头文件lauxlib.h定义了辅助库提供的辅助函数,它的所有定义都以LuaL_开头。辅助库是一个使用lua.h中API编写出的一个较高的抽象层。
    Lua的所有标准库编写都用到了辅助库;辅助库主要用来解决实际的问题。辅助库并没有直接访问Lua的内部,它都是用官方的基础API来完成所有工作的*/
    #include "lua-5.2.2/src/lauxlib.h"
    /*
    头文件lualib.h定义了打开标准库的函数。Lua库中没有定义任何全局变量。它将所有的状态都保存在动态结构lua_State中,
    所有的C API都要求传入一个指向该结构的指针。luaL_newstate函数用于创建一个新环境或状态。当luaL_newstate创建一个新的环境时,新的环境中并没有包含预定义的函数(eg.print)。为了使Lua保持灵活,
    小巧,所有的标准库都被组织到了不同的包中。当我们需要使用哪个标准库时,就可以调用lualib.h中定义的函数来打开对应的标准库;而辅助函数luaL_openlibs则可以打开所有的标准库
    */
    #include "lua-5.2.2/src/lualib.h"
    }
    int main()
    {
        char buff[256] = {0};
        int error;
         // 打开Lua,lua_State有的说是虚拟机有的说是状态机,感觉是其与lua交互的东西,里面有交互栈的相关信息
        // 所有C api函数的第一个参数都是这个lua_state
        lua_State *L = luaL_newstate();
        luaL_openlibs(L); // 打开标准库,lua所有的库都是以闭包
        while (fgets(buff, sizeof(buff), stdin) != NULL)
        {
            /*
            luaL_loadbuffer编译输入的lua代码,没有错误返回0并将编译之后的chunk压入栈
            */
            /*
            将chunk从栈中弹出并在保护模式下运行
            */
            error = luaL_loadbuffer(L, buff, strlen(buff), "line")
                || lua_pcall(L, 0, 0, 0);
            if (error)
            {
                /*
                如果有错误上面这两个函数都将错误信息压入栈
                lua_tostring从栈中获取
                */
                fprintf(stderr, "%s", lua_tostring(L, -1));
                /*
                从栈中删除错误信息
                */
                lua_pop(L, 1); // 从栈中弹出错误消息
            }
        }
    
        lua_close(L);
        getchar();
        return 0;
    }
  • 相关阅读:
    四叔的c++入门课(6) 条件语句
    四叔的c++入门课(5)变量类型
    四叔的c++入门课程(4)赋值语句与表达式
    四叔的c++入门课(3)变量
    如何选购笔记本电脑?
    四叔的c++入门课(2)Hello World
    四叔的c++入门课(1)什么是编程
    CSS3 transition-property属性
    display:inline、block、inline-block的区别?
    wps怎样删除空白页 WPS文档的空白页如何删除
  • 原文地址:https://www.cnblogs.com/zzyoucan/p/4308233.html
Copyright © 2011-2022 走看看