为什么 Lua C 函数中的参数值显示在堆栈底部?
Why do parameter values in Lua C functions show up at the bottom of the stack?
以 lua 的简单 C 函数为例:
int luacfunc(lua_State *L)
{
printf("%g\n", lua_tonumber(L, 1) + lua_tonumber(L, 2));
}
在这种情况下,参数显示为索引 1
和 2
。由于正数表示堆栈自下而上,这意味着参数位于堆栈的底部,而不是顶部。
为什么会这样?难道不需要在每次函数调用时移动整个堆栈来为参数腾出空间吗?
Lua 堆栈特定于您的函数调用。每个 C 函数调用都有自己的 "stack"(它实际上是更大堆栈的一部分,但对您是隐藏的)。你的论点既在顶部又在底部,因为它们是你堆栈中唯一的东西。
以 lua 的简单 C 函数为例:
int luacfunc(lua_State *L)
{
printf("%g\n", lua_tonumber(L, 1) + lua_tonumber(L, 2));
}
在这种情况下,参数显示为索引 1
和 2
。由于正数表示堆栈自下而上,这意味着参数位于堆栈的底部,而不是顶部。
为什么会这样?难道不需要在每次函数调用时移动整个堆栈来为参数腾出空间吗?
Lua 堆栈特定于您的函数调用。每个 C 函数调用都有自己的 "stack"(它实际上是更大堆栈的一部分,但对您是隐藏的)。你的论点既在顶部又在底部,因为它们是你堆栈中唯一的东西。