Lua中如何查看栈顶的值?
我有以下 C++ 代码:
if (luaL_loadfile(L, filename) == NULL) {
return 0;// error..
}
lua_pcall(L,0,0,0); // execute the current script..
lua_getglobal(L,"variable");
if (!lua_isstring(L,-1)){ // fails this check..
lua_pop(L,1);
return 0; // error
}
相关文件的内容是
-- A comment
variable = "MyString"
有什么想法吗?
最佳答案
可能的问题是 luaL_loadfile()
记录为返回与 lua_load()
相同的值或一个额外的错误代码。在任何一种情况下,返回值都是 int
,其中 0 表示成功,非零值表示错误代码。
因此,如果文件已加载,测试 luaL_loadfile(...) == NULL
为 true,但代码调用该错误并返回。
lua_pcall()
函数也返回一个状态码,您可能也想验证一下。
否则,如图所示的脚本会创建一个全局变量,lua_getglobal()
会将其检索到可以使用 lua_isstring()
对其进行测试的堆栈,或者如果 lua_tostring()
足够像字符串,则让您返回它的值可能更有用。 .后一个函数将返回指向以 nul 结尾的字符串的 const char *
,如果堆栈索引处的值无法转换为字符串,则返回 NULL。请参阅链接中的 Lua 引用手册以了解其余详细信息以及有关在循环内使用 lua_tostring()
的警告。
编辑:我在几个地方添加了更好的手册链接。
关于c++ - 从 C++ 检查 Lua 堆栈项的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/564100/