在我的(C++)游戏中,我使用Lua作为脚本语言。在一个调用(从lua到c++)中,我检查堆栈顶部的类型:
if(lua_type(L, (0)) == LUA_TSTRING)但有时lua_type(L,(0))返回9。
我似乎找不到对此的任何引用(返回值应该介于-1和8之间或LUA_TNONE、LUA_TNIL、.LUA_TTHREAD)。
发生什么事了呢?
发布于 2015-05-18 11:15:07
堆栈的顶部是索引-1,而不是0。
0永远不能用作访问堆栈的索引:
(请注意,0从来不是一个可接受的索引。)
在参考手册中的§4.3 -有效和可接受的指数。
Lua中的C API没有掌握程序员的手:
与大多数C库一样,Lua函数不检查它们的参数是否有效或是否一致。但是,您可以通过编译具有定义的宏LUA_USE_APICHECK的Lua来更改此行为。[§4]
https://stackoverflow.com/questions/30301447
复制相似问题