我在我的(C++)游戏中使用Lua作为脚本语言.在一个调用中(从lua到c ++)我检查堆栈顶部的类型:
if(lua_type(L, (0)) == LUA_TSTRING)
Run Code Online (Sandbox Code Playgroud)
但有时lua_type(L,(0))返回9.
我似乎无法找到任何引用(返回值应介于-1和8之间或LUA_TNONE,LUA_TNIL,... LUA_TTHREAD).
发生了什么?
堆栈的顶部是索引-1,而不是0.
永远不能将0用作访问堆栈的索引:
(注意0绝不是可接受的索引.)
在§4.3 -有效和可接受指数在参考手册中.
Lua中的C API没有程序员的手:
与大多数C库一样,Lua API函数不检查其参数的有效性或一致性.但是,您可以通过使用定义的宏LUA_USE_APICHECK编译Lua来更改此行为.[ §4 ]
| 归档时间: |
|
| 查看次数: |
330 次 |
| 最近记录: |