C/C++调用Lua之简单的error handler

欢迎前往个人博客 驽马点滴 和视频空间 哔哩哔哩-《挨踢日志》


假设我们在编写一个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 

extern "C"
{
#include 
#include 
#include 
}

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

你可能感兴趣的:(C/C++调用Lua之简单的error handler)