7

Lua 有luaL_errorlua_error函数可以在 C 函数中使用,例如:

luaL_error( L, "something bad" );

这将导致显示错误消息并停止 Lua 执行。错误消息将包含它发生的行和文件:

Error: ../example/ex01.lua:6: something bad

是否有类似的功能可以显示错误但不会破坏 lua 执行?但显示它发生的线。

4

1 回答 1

5

复制luaL_error的源代码,并将最后的调用替换为对使用字符串lua_error的适当调用。像这样的东西:printflua_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));
}

不要忘记通过在 say base_funcsin 中添加条目lbaselib.c或调用将其导出到 Lua lua_register(L,"warn",luaB_warn)

于 2013-03-12T12:50:03.667 回答