欢迎前往个人博客 驽马点滴 和视频空间 哔哩哔哩-《挨踢日志》
序
假设我们在编写一个C/C++的应用程序,程序中嵌入了Lua,那么,在使用Lua的C API的过程中,如何处理error,是一个需要引起重视的环节。
这里,抛砖引玉,实现一个简单的error handler
Error Handler 实现
我们将实现一个 error handler
这个error handler负责打印错误消息,关闭lua的Stack后,退出应用程序。
void error(lua_State *L, const char *fmt, ...)
{
va_list argp;
va_start(argp, fmt);
vfprintf(stderr, fmt, argp);
va_end(argp);
lua_close(L);
exit(EXIT_FAILURE);
}
如何使用
在上一篇C/C++应用程序嵌入Lua中,我们运行了C/C++使用Lua API的第一个Hello World应用程序,现在将其中的main.cpp
的内容替换成以下内容,保存并运行:
#include <iostream>
extern "C"
{
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
}
int main(int argc, const char * argv[]) {
lua_State *L = luaL_newstate();
luaL_openlibs(L);
int err = luaL_dostring(L, "print('Hello World')");
if (err)
{
error(L, "---- ERROR!\n");
}
else
{
printf("---- SUCCESS!\n");
}
lua_close(L);
return 0;
}
附
以上代码摘自 Programming in Lua third edition