假设我在 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例如设置新的堆栈框架,还是根本不应该这样做?