我有一个简单的程序,它在 lua 文件上运行 luaL_dofile
(我们将其称为“script.lua”,然后检查错误,然后再次运行该文件,依此类推。如果程序在任何时候发现错误,它会将其写入日志然后终止。问题是,script.lua 获取用户的输入,然后使用 loadstring
运行该字符串。我不知道想要发生的(以及确实发生的)是 loadstring
创建一个错误(因为用户输入了错误的代码),然后 C++ 程序发现这个错误并终止程序。在我看来,最好的方法是防止C++程序发现错误的方法是将其从堆栈中删除,但我不知道如何从script.lua访问lua堆栈。
最佳答案
显然问题是我一直很傻。我更改了代码,以便它检测到错误然后打印它,而不是使用 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
关于c++ - 如何从lua访问lua堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31975206/