• hello lua


    http://manual.luaer.cn/

    http://www.lua.org/pil/contents.html

     1 #include <cstdio>
     2 #include <string>
     3 extern "C"{
     4 #include "lua.h"
     5 #include "lauxlib.h"
     6 #include "lualib.h"
     7 };
     8 
     9 
    10 static int foo(lua_State* L)
    11 {
    12     int n = lua_gettop(L);
    13     lua_Number sum = 0;
    14     int i = 0;
    15     for (i=1; i <= n; ++i)
    16     {
    17         if (!lua_isnumber(L, i))
    18         {
    19             lua_pushstring(L, "incorrect argument");
    20             lua_error(L);
    21         }
    22         sum += lua_tonumber(L, i);
    23     }
    24     lua_pushnumber(L, sum/n);
    25     lua_pushnumber(L, sum);
    26     return 2;
    27 }
    28 
    29 int main(void)
    30 {
    31     char buff[256] = {0};
    32     int error = 0;
    33 
    34     lua_State *L = luaL_newstate();
    35     luaL_openlibs(L);
    36 
    37     lua_createtable(L, 0, 0);
    38     lua_setfield(L, LUA_GLOBALSINDEX, "t_test");
    39     lua_getfield(L, LUA_GLOBALSINDEX, "t_test");
    40     lua_pushstring(L, "test");
    41     lua_setfield(L, -2, "test");
    42 
    43     lua_pushcfunction(L, foo);
    44     lua_setfield(L, -2, "foo");
    45     
    46     lua_settop(L, 0);
    47 
    48     while (fgets(buff, sizeof(buff), stdin) != NULL)
    49     {
    50         size_t sz = strlen(buff);
    51         error = luaL_loadbuffer(L, buff, sz, "line")
    52                 || lua_pcall(L, 0, 0, 0);
    53         if (error)
    54         {
    55             fprintf(stderr, "%s", lua_tostring(L, -1));
    56             lua_pop(L, 1);
    57         }
    58     }
    59 
    60     /*int err = luaL_loadfile(L, "hangj.lua") || lua_pcall(L, 0, LUA_MULTRET, 0);
    61     if (err)
    62     {
    63         fprintf(stderr, "%s", lua_tostring(L, -1));
    64         lua_pop(L, 1);
    65     }*/
    66 
    67     lua_getfield(L, LUA_GLOBALSINDEX, "hangj");
    68     const char* str = lua_tostring(L, -1);
    69     if (str)
    70         printf("hangj: %s
    ", str);
    71     lua_remove(L, -1);
    72 
    73     lua_close(L);
    74     getchar();
    75     return 0;
    76 }
    int lua_gettop (lua_State *L);

    返回栈顶元素的 index,因为 index 是从 1 开始的,所以返回值等于栈中元素的个数。0 表示空栈。

    +V d2h5X251bGw= 请备注:from博客园
  • 相关阅读:
    bmp和Variant的转换
    获得Variant类型
    移去OleContainer的黑边框
    调整Mic音量
    关闭声道
    检测声卡存在
    控制音量及平衡
    显示媒体时间
    显示Audio CD的音轨时间
    显示AVI文件的桢数
  • 原文地址:https://www.cnblogs.com/hangj/p/4109540.html
Copyright © 2020-2023  润新知