1

Lua インタープリターを C プログラムに組み込みましたが、明確な答えが見つからないように見える単純な質問があります。

次のように Lua に公開する C 関数があるとします。

static int calculate_value(lua_State *L) 
{
    double x = luaL_checknumber(L, 1);
    return 0;
}

luaL_checknumber を呼び出したときに Lua がエラーをスローしたことを (この関数が呼び出された後に C で) どのように判断できますか? スタックの一番上にエラー メッセージが表示されていますか? エラーがスローされたことを示す他のインジケーターはありますか?

4

2 に答える 2

2

一般的に、あなたはしません。エラーをスローするLua関数はsetjmp/longjmp、呼び出し元のLuaランタイムに制御を戻すために(またはC ++としてコンパイルされている場合は例外を)使用します。エラーは、関数を呼び出したLua関数に表示されますcalculate_value

パラメータエラーを別の方法で処理したい場合は、LuaのluaL_check*関数を使用できません。

于 2012-06-26T05:46:58.207 に答える
1

その関数が Lua 経由で呼び出される場合は、 を使用できますpall。またはlua_pcall、その関数を呼び出した Lua スクリプトを実行する前に使用します。

于 2012-06-26T12:17:43.577 に答える