7

LuaにはluaL_error関数があり、次のようにC関数内で使用されるlua_error関数があります。

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));
}

base_funcsたとえばinにエントリを追加するlbaselib.cか、を呼び出して、Luaにエクスポートすることを忘れないでくださいlua_register(L,"warn",luaB_warn)

于 2013-03-12T12:50:03.667 に答える