如何用dostring来运行lua文件用dostring来运行一个有返回值的函数,如何获取返回值听说lua执行函数是单线程,而且执行一个带参的函数需要自己清理堆栈为什么绑定的c++函数,只能接收一个参数,而且必须是一个int返回值.如:int Show_Msg(LuaState* state)关于dofile:对于dofile是不是读取一个文件的所有指令,然后每条都会去执行dotring.如果不是,用两个线程,调用同样的带返回值的函数.一个是调用dostring一个dofilre调用文件(文件内也是同样的指令)那么长时间执行后,两方数据是否会被破坏?还有两点忘了写lua默认为全局变量那么 形参和返回值是临时的还是全局的呢?funciton Msg(x,y)a=x+yreturn aend其中的 x,y,a是全局的还是临时的
1 回答

犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
a = dostring.....
dostring最后一个返回值,就是准备给a的。
c++绑定函数返回时,它只能且必须返回一个值,这个值通知Lua,我返回了几个值在堆栈里。你不返回这个值的话,难道让Lua去猜你会返回几个值?你这里设了返回值个数后,Lua才会给你分配保留适当的空间,不然你返回后,之前放的返回值就丢了。
dofile和dostring一样,会先获取源文件或字符串内容,然后编译,再逐条执行代码。
你说的多线程,我不明白你的意思,就不说了。
最后那个x和y当然是临时的,而那个a,是全局的了。
Lua5.2和之前的版本不一样了,“全局”不是真正的全局,而是当前环境的全局,仔细去看看Lua5.2的官方文档。
添加回答
举报
0/150
提交
取消