在我的C文件中,我像这样调用luaL_dostring:
luaL_dostring(L, "return 'somestring'");
如何在此行之后在C中读取此返回值?
感谢。
编辑: 谢谢你的帮助。
我想在检索它之后添加它以删除元素,使用:
lua_pop(L, 1);
答案 0 :(得分:6)
该值保留在Lua堆栈上。要检索该值,请使用lua_toXXXX
函数之一,其中-1作为索引参数(-1表示堆栈的顶部)。或者,使用lua_gettop()
来获取堆栈的大小。
在您的情况下,请使用:
luaL_dostring(L, "return 'somestring'");
const char * str = lua_tostring(L, -1);
答案 1 :(得分:1)
文档说luaL_dostring
确实有一个返回值,成功时为零:
luaL_dostring
加载并运行给定的字符串。它被定义为以下宏:
(luaL_loadstring(L, str) || lua_pcall(L, 0, LUA_MULTRET, 0))
如果没有错误,则返回0;如果出现错误,则返回1.
强大的代码应检查0返回值。
严格地说,宏扩展为布尔值,如果出现错误,则为true
,在C ++中。这在单元测试中可能很重要。