在从 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到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]
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 什么时候在C++中返回常量引用是个好主意
- 你能重载对象变量名本身返回的内容吗
- 为什么 Serial.println(<char[]>);返回随机字符?
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如何获取std::result_of函数的返回类型
- QueryWorkingSet总是返回false
- (C++)分析树以计算返回错误值的简单算术表达式
- 访问者访问变体并返回不同类型时出错
- 如何返回一个类的两个对象相加的结果
- PostgreSQL 将数组或记录作为行返回
- 删除为应该在哈希表中的记录返回 false 的函数
- C++函数,它返回迭代器到具有给定值的第一个记录
- 在从 Lua 调用的C++中,lua_type(L,0) 返回未记录的 9
- qsqlQuery 中的 next() 返回表中的最后一条记录
- 有时webservice会返回1000条记录.如何在代码中处理
- QueryDisplayConfig 不返回任何记录的值
- c++ system()调用没有正确记录Java返回代码
- 如何从Oracle的过程中返回我自己的结构的数组/记录集?
- SOCI, pgsql函数返回表记录- type_conversion不工作