首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在从Lua调用的C++中,lua_type(L,0)返回未记录的9

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

Stack Overflow用户
提问于 2015-05-18 11:00:21
回答 1查看 410关注 0票数 7

在我的(C++)游戏中,我使用Lua作为脚本语言。在一个调用(从lua到c++)中,我检查堆栈顶部的类型:

代码语言:javascript
复制
if(lua_type(L, (0)) == LUA_TSTRING)

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

我似乎找不到对此的任何引用(返回值应该介于-1和8之间或LUA_TNONE、LUA_TNIL、.LUA_TTHREAD)。

发生什么事了呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-18 11:15:07

堆栈的顶部是索引-1,而不是0。

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

(请注意,0从来不是一个可接受的索引。)

在参考手册中的§4.3 -有效和可接受的指数

Lua中的C API没有掌握程序员的手:

与大多数C库一样,Lua函数不检查它们的参数是否有效或是否一致。但是,您可以通过编译具有定义的宏LUA_USE_APICHECK的Lua来更改此行为。[§4]

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30301447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档