的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