#define SDL_assert(condition) if (assertion_enabled && (condition)) { trigger_assertion; }
| bool | condition | テストの対象のブール値 |
このマクロはSDL_ASSERT_LEVELが2以上の場合に有効になり, そうでない場合は無効になる. このマクロはデバッグビルド時のみテストが行われるため, より高負荷なテストが行える. また, 失敗時には常に停止してプログラマに問題を検証させることを目的としている.
要約すると: これは様々な箇所に書くことができる. そして, エンドユーザ向けのビルドからは消えてしまう.
アサーションが無効の場合, conditionはsizeof演算子で囲まれる. これにより, 関数の呼び出しと副作用は実行されなくなり, アサーションのみ参照する不使用の変数に対して警告も発しないようになる.
環境変数"SDL_ASSERT"にいくつかの文字列("abort", "break", "retry", "ignore", "always_ignore")の1つを設定してデフォルトの動作を変えることができる. メインスレッドがGUIインターフェースだが, バックグラウンドスレッドでアサーションデバッグを行うときは, "break"に設定するとデバッガはアプリケーションのUIが悪い影響(デッドロック等)を受けずにアサーションが発生するとすぐにコントロールを得ることができる.
SDL 3.2.0以降