关于C++中使用的这个简单的LUA脚本代码,我有一个问题。
Main.cpp
#include <iostream>
using namespace std;
extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
int main()
{
lua_State *L=luaL_newstate();
luaL_openlibs(L);
luaL_loadfile(L,"script.lua");
lua_call(L,0,1);
int n;
n=lua_tonumber(L,-1); // Can be changed to 0 and i gain the same result as -1
cout<<n<<endl;
lua_close(L);
cout<<"test"<<endl;
return 0;
}
script.lua
print("Hello world")
return 10程序正常工作,并向控制台返回10,但问题是,为什么当我将lua_tonumber(L,-1) -1更改为0时,它仍然返回10?堆栈中似乎有两个10,一个索引为0,另一个索引为-1。但是为什么呢?
发布于 2012-08-13 02:18:44
来自Lua文档:
正索引表示绝对堆栈位置(从1开始);负索引表示相对于堆栈顶部的偏移量。
0索引在Lua中是不允许的,并且行为是未定义的(可能它只是将0更改为1,但您不应该依赖它)。
https://stackoverflow.com/questions/11924027
复制相似问题