lua_pcall 、 lua_cpcall 函数参数解释
时间: 2024-11-15 13:25:02 浏览: 4
lua_test.rar_C++_c# lua_c++ lua_lua_lua调用C++
`lua_pcall` 和 `lua_cpcall` 都是 Lua 自带的 C API 中用于调用 Lua 脚本函数的重要函数。它们的区别在于处理错误的方式:
1. **lua_pcall**: 这个函数是标准的异步调用方式,当遇到错误时,它会立即返回错误码,不会阻塞外部程序。它的原型如下:
```c
int lua_pcall(lua_State *L, int narg, int nresults, int errfunc);
```
参数解释:
- `L`: 当前的 Lua 环境(状态机)。
- `narg`: 要传递给脚本的参数个数。
- `nresults`: 预期的结果堆栈元素的数量。
- `errfunc`: 如果发生错误,将被调用的错误处理函数索引,0 表示默认错误处理。
2. **lua_cpcall**: 这是一个同步版本的调用,它会在调用结束并且没有错误发生时才会返回。如果遇到错误,它会调用用户提供的回调函数,并继续执行,直到完成或再次遇到错误。其原型类似:
```c
int lua_cpcall(lua_State *L, lua_CFunction func, lua_State *LUA, int narg);
```
新增的参数:
- `func`: 用户提供的回调函数,当 `lua_pcall` 需要暂停时调用。
- `LUA`: 另一个 Lua 状态机,用于保存调用过程中的上下文。
阅读全文