luaL_errorのソースコードをコピーし、最後のへの呼び出しを、文字列を使用lua_error
する適切な呼び出しに置き換えます。このようなもの:printf
lua_tostring(L,-1)
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
たとえばinにエントリを追加するlbaselib.c
か、を呼び出して、Luaにエクスポートすることを忘れないでくださいlua_register(L,"warn",luaB_warn)
。