在从 Lua 调用的C++中,lua_type(L,0) 返回未记录的 9

In C++ called from Lua, lua_type(L,0) returns 9 which isn't documented

本文关键字:记录 返回 调用 Lua C++ 在从 lua type      更新时间:2023-10-16

我正在使用LUA作为(C )游戏中的脚本语言。在一个通话中(从LUA到C ),我检查了堆栈顶部的类型:

if(lua_type(L, (0)) == LUA_TSTRING)

但有时lua_type(l,(0))返回9。

我似乎找不到对此的任何引用(返回值应在-1和8之间或lua_tnone,lua_tnil,... lua_tthread)。

发生了什么事?

堆栈的顶部为index -1,而不是0。

0永远不能用作访问堆栈的索引:

(请注意,0绝不是可接受的索引。)

§4.3 - 参考手册中的有效且可接受的索引。

LUA中的C API不握住程序员的手:

与大多数C库中一样,LUA API函数不会检查其参数是否有效性或一致性。但是,您可以通过定义的宏LUA_USE_APICHECK来更改此行为。[§4]