#define SDL_assert_release(condition) if (assertion_enabled && (condition)) { trigger_assertion; }
| bool | condition | テストの対象のブール値 |
このマクロはSDL_ASSERT_LEVELが1以上の場合に有効になり, そうでない場合は無効になる. このマクロは低コストで極めてまれな失敗のテストでの使用を意図している. 一般的にはリリースビルドでのアサーションの失敗は嫌われるため, これは発生が致命的な場合に限られる. ほとんどの場合アサーションよりも良い方法を検討するべきである.
アサーションが無効の場合, conditionはsizeof演算子で囲まれる. これにより, 関数の呼び出しと副作用は実行されなくなり, アサーションのみ参照する不使用の変数に対して警告も発しないようになる.
環境変数"SDL_assert_release"にいくつかの文字列("abort", "break", "retry", "ignore", "always_ignore")の1つを設定してデフォルトの動作を変えることができる. メインスレッドがGUIインターフェースだが, バックグラウンドスレッドでアサーションデバッグを行うときは, "break"に設定するとデバッガはアプリケーションのUIが悪い影響(デッドロック等)を受けずにアサーションが発生するとすぐにコントロールを得ることができる.
SDL 3.2.0以降