Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.7k views
in Technique[技术] by (71.8m points)

lua的lua_pcall中的错误处理函数的返回值有什么用?

在C++使用lua_pcall函数调用lua时,错误处理函数的返回值有什么用?
我编写代码时,在错误处理函数中获取每层函数的调用信息,并最后添加到栈顶,发现如果错误处理函数返回的是0,则之后就不可以通过 lua_tostring(L, -1) 获取到这个调用信息,如果返回1,则可以获取到。这个是什么原因?lua的官方文档好像也没提到这个问题。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

实际的“返回值”是放到 lua 的 stack 里的,函数的返回值的放在 stack 上的“返回值”的个数。

于是返回零的时候,意味着 lua 的 stack 上没有放任何东西,自然不能用 lua_tostring(L,-1) 了。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...