【发布时间】:2012-09-01 03:01:33
【问题描述】:
我的游戏引擎将一个值作为函数的参数推送到 lua 堆栈,然后使用 lua_pcall 调用它。 lua 代码将运行并调用其他 lua 函数。最终,这个 lua 代码将调用一个 C 函数。此函数是否可以检索最初压入堆栈的值?
是这样的:
<engine function A>
pushes parameter value X on to stack for lua
<lua func>
<lua func>
<lua func>
<engine function B>
can I extract the values X that was pushed by function A here?
【问题讨论】:
-
您可以使用调试界面来完成,但这将是一个可怕的组合。为什么不将值传递到堆栈中,或者以其他方式(全局、方法调用等)对其进行访问?
-
现在我只是用一个全局变量将值保存在 C 中。在上图中,FUNCTION A 是游戏运行 LUA 代码的通用入口点,我不乐意添加该全局变量,因为只有当 lua 调用 FUNCTION B 时才需要该值
-
...另一个限制是我想在有限的上下文中改变 FUNCTION B 的行为。在 Lua 中已经有 100 多次调用它,我不能通过所有它们推送一个额外的参数,所以 FUNCTION A 推送的参数可以对 FUNCTION B 可用。如果有一个简单的方法来清理的话访问我的调用堆栈中第一个 lua 函数的堆栈上的第一个变量