Lua从C添加更改全局变量

Lua从C添加更改全局变量,第1张

概述我有一个小的Lua脚本: function g () print( AUp);end 从C我加载脚本,添加一个名为AUp的变量,让它运行几百次. for( i=0; i<2000; i++){ num= i; lua_pushnumber( L, i); lua_setglobal( L, "AUp"); lua_getglobal( L, "g"); 我有一个小的Lua脚本:

function g ()    print( AUp);end

从C我加载脚本,添加一个名为AUp的变量,让它运行几百次.

for( i=0; i<2000; i++){    num= i;    lua_pushnumber( L,i);    lua_setglobal( L,"AUp");    lua_getglobal( L,"g");    if (lua_call( L,0) != 0)       printf( "%s",lua_tostring(L,-1));}

始终是打印输出为0.如果我输入(i 1),输出始终为1.我无法更改AUp的值.该值保持不变,就像第一次调用lua_pushnumner和lua_setglobal时一样.

怎么了?该函数应该一次又一次地调用,但是AUp的值可以改变,所以我必须在调用lua_call之前更新它.

解决方法 我不确定,但你试过了:
 1.在Lua脚本中定义AUp初始值.
 2.在C循环期间清理堆栈值. ?

编辑:
忘了那两点:)

for(i = 0; i<200; i++)   {            lua_pushnumber(l,i);            lua_setglobal(l,"foo");            lua_getglobal(l,"test_f");            if (lua_pcall(l,0) != 0)            {                    printf( "%s",lua_tostring(l,-1));            }    }

function test_f()    print(foo)end

使用Lua 5.1.5可以正常工作
顺便说一句,根据manual – voID lua_call(lua_State * L,int nargs,int nresults); (改用lua_pcall()).甚至无法使用Lua 5.1.5标头编译您的代码.

总结

以上是内存溢出为你收集整理的Lua从C添加/更改全局变量全部内容,希望文章能够帮你解决Lua从C添加/更改全局变量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1231419.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存