C& Lua:luaL_dostring返回值

时间:2010-09-09 14:58:28

标签: c lua

在我的C文件中,我像这样调用luaL_dostring:

luaL_dostring(L, "return 'somestring'");

如何在此行之后在C中读取此返回值?

感谢。

编辑: 谢谢你的帮助。

我想在检索它之后添加它以删除元素,使用:

lua_pop(L, 1);

2 个答案:

答案 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 ++中。这在单元测试中可能很重要。