C & Lua:luaL_dostring返回值

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

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

在这一行之后,我该如何在 C 中读取这个返回值呢?

谢谢。

编辑: 感谢帮助。

我想补充一下,在检索元素后删除它,您可以使用:

lua_pop(L, 1);

原文链接 https://stackoverflow.com/questions/3677792

点赞
stackoverflow用户221509
stackoverflow用户221509

该值保留在 Lua 栈上。为了检索该值,可以使用 lua_toXXXX 函数之一,并将 -1 作为索引参数(-1 指向栈顶)。或者,使用 lua_gettop() 来获取堆栈的大小。

在您的情况下,请使用以下代码:

luaL_dostring(L, "return 'somestring'");
const char * str = lua_tostring(L, -1);
2010-09-09 16:09:55
stackoverflow用户1127972
stackoverflow用户1127972

文档说 luaL_dostring 有一个返回值,如果成功则为零:

luaL_dostring

加载并运行给定的字符串。它被定义为以下宏:

 (luaL_loadstring(L, str) || lua_pcall(L, 0, LUA_MULTRET, 0))

如果没有错误,则返回0;如果出现错误,则返回1。

鲁棒性代码应该检查返回值是否为零。

严格来说,在 C++ 中,这个宏扩展成布尔值,如果出现错误,则为 true。这在一些单元测试中可能很重要。

2015-11-07 07:37:17