假设我在 Lua 范围内注册了两个 C 函数:
int func1(lua_State* L)
{
int n = lua_gettop(L);
// Do sth here...
}
int func2(lua_State* L)
{
int n = lua_gettop(L);
// Do sth here...
}
问题是:我可以func2
在内部打电话func1
吗?
我发现如果将多个参数传递给func1
,则lua_gettop()
返回的值func2
毫无意义。
例如,如果func1
在我的 lua 脚本中传递了 3 个参数,则lua_gettop()
返回 3 in func1
,并且不少于 3 in func2
。这绝对是错误的,因为lua_gettop()
应该返回传递给当前函数的参数数量。
那么我应该在调用之前做任何堆栈技巧,func2
例如设置新的堆栈框架,还是根本不应该这样做?