c - Lua 的“全局”本地值存储在哪里?
问题描述
我需要从 C 中调用 Lua 函数,只要该函数是全局的,我就可以在全局表中找到它,但如果它被声明为本地,我如何将地址压入堆栈以调用它?
function MyGlobal()
print("Global")
end
local function MyLocalGlobal()
print("Local")
end
从 C调用MyGlobal()
不是问题,它工作正常。我在全局表中查找函数。
但是我如何MyLocalGlobal()
从 C 调用?它不在全局表中,但它在哪里以及如何推送地址?
我正在使用 Lua 5.3.4。
解决方案
该MyLocalGlobal()
功能不是真正的全球性的。它对于代表整个加载代码块的匿名函数是本地的。
当你打电话时真正发生了什么lua_load/lua_loadstring
:
return function(...) -- implicit functionality outside of code to be loaded
-- your file starts here --
function MyGlobal()
print("Global")
end
local function MyLocalGlobal()
print("Local")
end
-- file ends here --
end -- implicit functionality outside of code to be loaded
您可以MyLocalGlobal
稍后使用调试工具(通过“调试”库),或者您应该在该源文件的末尾显式返回所需的接口,并在加载/执行后立即在本机端获取/读取接口块。
推荐阅读
- android - 是否可以在 ViewPager2 中更改项目的宽度?
- timescaledb - TimescaleDB 未找到函数 add_compression_policy
- javascript - 如何根据另一个单元格中的值替换一个单元格中的值?
- javascript - 可以使用js对象解构但在分配给新对象之前修改一些值吗?
- laravel - 我根据id删除了表中的一个数据,但是删除的是另一个值更小的id
- javascript - JQuery .change() 只工作一次
- html - 如何在 CSS 中更改图像的 hitbox?
- flutter - 我在 Flutter 中的应用集成了与 Socket.io 的聊天,并且不连接到远程服务器
- c# - 尝试发布 C# 项目但得到:无法复制“App.config”错误
- r - 对某些列取平均值