Lua: lua_call/lua_pcall/lua_cpcall的用法
2016-03-29 14:58
323 查看
函数原型:
1)void lua_call (lua_State *L, int nargs, int nresults);
L是执行环境,可以理解为当前栈,nargs参数个数,nresults返回值个数。
2)void lua_pcall(lua_State *L,int nargs, int nresults,int nerrfunc);
lua_pcall和该函数区别是多一个参数,用于发生错误处理时的代码返回。
3)void lua_pcall(lua_State *L,int nargs, int nresults,int nerrfunc,void* ud)
lua_cpcall则又多一个用于传递用户自定义的数据结构的指针
对于函数的使用场景,一个网友:
lua_call的运行是无保护的,它与lua_pcall相似,但是在错误发生的时候它抛出错误而不是返回错误代码。当你在应用程序中写主流程的代码时,不应该使用lua_call,因为你应该捕捉任何可能发生的错误。当你写一个函数的代码时,使用lua_call是比较好的想法,如果有错误发生,把错误留给关心她的人去处理.
结论:
写应用程序主流程代码用lua_pcall
写C Native Function代码时用lua_call,与之类似的还有luaL_checkxxx
1)void lua_call (lua_State *L, int nargs, int nresults);
L是执行环境,可以理解为当前栈,nargs参数个数,nresults返回值个数。
2)void lua_pcall(lua_State *L,int nargs, int nresults,int nerrfunc);
lua_pcall和该函数区别是多一个参数,用于发生错误处理时的代码返回。
3)void lua_pcall(lua_State *L,int nargs, int nresults,int nerrfunc,void* ud)
lua_cpcall则又多一个用于传递用户自定义的数据结构的指针
对于函数的使用场景,一个网友:
lua_call的运行是无保护的,它与lua_pcall相似,但是在错误发生的时候它抛出错误而不是返回错误代码。当你在应用程序中写主流程的代码时,不应该使用lua_call,因为你应该捕捉任何可能发生的错误。当你写一个函数的代码时,使用lua_call是比较好的想法,如果有错误发生,把错误留给关心她的人去处理.
结论:
写应用程序主流程代码用lua_pcall
写C Native Function代码时用lua_call,与之类似的还有luaL_checkxxx
相关文章推荐
- 'JDI thread evaluations' has encountered a problem. Exception processing async thread queue
- c++向Lua中传递复杂的结构该如何做?
- lua gc
- lua and or not 逻辑运算符
- 深入理解关于Lua与C数据通信的栈
- 【Lua】不进位保留小数点X位数
- lua使用毫秒
- Lua基础之math(数学函数库)
- lua中遍历table的几种方式比较
- Lua中..和#运算符的使用方法
- lua手工编译遇到的问题
- 纯源码包安装 lua 的时候遇到的错误和解决办法
- lua string库模式匹配
- lua调试工具
- Lua标准库
- Lua脚本接入Android使用JNI调用本地接口,需要注意的问题
- lua中table.sort用法问题
- Lua代码解析-写给C和C++开发人员
- Python、Lua和Ruby——脚本大P.K.
- Lua 的速度为什么比 Python 快