如何从lua访问lua堆栈

时间:2015-08-12 20:53:52

标签: c++ lua

我有一个简单的程序在lua文件上运行luaL_dofile(我们称之为'script.lua',然后检查错误,然后再次运行文件,依此类推。依此类推。指向程序发现错误,它将其写入日志然后终止。问题是,script.lua获取用户的输入,然后使用loadstring运行该字符串。我不想发生什么(以及什么确实发生了)loadstring创建错误(因为用户输入的代码不正确),然后C ++程序发现此错误并终止程序。在我看来,防止C ++程序发现错误的最佳方法是从堆栈中删除它,但我不知道如何从script.lua访问lua堆栈。

1 个答案:

答案 0 :(得分:2)

显然问题是我一直都很傻。我更改了我的代码,以便它检测到错误然后打印它,而不是使用assert

script.lua的示例:

这不能正常工作:

local input = io.read()

assert(loadstring(input))()

这确实有效:

local input = io.read()

output, error = loadstring(input)
if (output == nil) then
    print (error)
else
    output()
end