的Lua具有luaL_error,和lua_error功能的C函数内使用,如:是否有Lua警告而不是Lua错误?
luaL_error(L, "something bad");
这将导致一个错误消息被显示和Lua执行停止。该错误消息将包含在那里发生的行和文件:
Error: ../example/ex01.lua:6: something bad
是否有类似的功能,显示错误,但不破LUA执行?但显示出现在哪里。
的Lua具有luaL_error,和lua_error功能的C函数内使用,如:是否有Lua警告而不是Lua错误?
luaL_error(L, "something bad");
这将导致一个错误消息被显示和Lua执行停止。该错误消息将包含在那里发生的行和文件:
Error: ../example/ex01.lua:6: something bad
是否有类似的功能,显示错误,但不破LUA执行?但显示出现在哪里。
复制luaL_error的源代码,并在最后通过使用字符串lua_tostring(L,-1)
以printf
的合适呼叫替换呼叫lua_error
。事情是这样的:
LUALIB_API int luaL_warn (lua_State *L, const char *fmt, ...) {
va_list argp;
va_start(argp, fmt);
luaL_where(L, 1);
lua_pushvfstring(L, fmt, argp);
va_end(argp);
lua_concat(L, 2);
printf("warning: %s\n",lua_tostring(L,-1));
return 0;
}
static int luaB_warn (lua_State *L) {
return luaL_warn(L, "%s", luaL_checkstring(L, 1));
}
不要忘记通过增加发言权base_funcs
在lbaselib.c
或致电lua_register(L,"warn",luaB_warn)
的条目,将其导出到Lua。
您可以使用'print'和以下任一方法自己创建它:http://stackoverflow.com/a/2555881/1633117 – 2013-03-12 11:53:58
这不就是......打印一条消息吗?或者你在谈论消息的具体格式? – 2013-03-12 12:48:40
@NicolBolas,OP需要行号等,格式与用于出错的格式一致 – lhf 2013-03-12 12:50:52