以 lua 的简单 C 函数为例:
int luacfunc(lua_State *L)
{
printf("%g\n", lua_tonumber(L, 1) + lua_tonumber(L, 2));
}
在本例中,参数显示为索引 1
和 2
。由于正数表示堆栈自下而上,因此意味着参数位于堆栈的底部,而不是顶部。
为什么会这样呢?难道不需要在每次函数调用时移动整个堆栈来为参数腾出空间吗?
最佳答案
Lua 堆栈特定于您的函数调用。每个 C 函数调用都有自己的“堆栈”(它实际上是一个更大堆栈的一部分,但对您来说是隐藏的)。您的参数既位于顶部又位于底部,因为它们是堆栈中唯一的内容。
关于c - 为什么Lua C函数中的参数值显示在堆栈底部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31718292/