gpt4 book ai didi

c - lua中的 "dofile"和C API中的 "luaL_dofile"有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-04 00:01:12 28 4
gpt4 key购买 nike

使用 Lua 5.3.4 C API,这有效:

luaL_dostring(lua, "dofile('mnemonics.lua')");

但这无法执行文件:

luaL_dofile(lua, "mnemonics.lua");

相反,它报告“试图调用字符串值”。

当我将它替换为

luaL_loadfile(lua, "mnemonics.lua");

它返回 LUA_OK,但它并没有像预期的那样将函数压入堆栈。事实上,之后堆栈为空(gettop 报告 0)。

我可以使用 dostring 解决方法,但要么是我遗漏了什么,要么是存在错误。

最佳答案

从空栈中弹出会导致意想不到的行为。 Lua 解释器在执行 C 代码和执行 Lua 代码之间清理堆栈,因此困惑的堆栈不会影响 Lua 中的 dofile

关于c - lua中的 "dofile"和C API中的 "luaL_dofile"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42540932/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com