目次 - SDL 3.0 API(機能別) - アサーション - SDL_assert_release

SDL_assert_release

リリースビルド時でもアサーションを生成するマクロ

ヘッダ

SDL3/SDL_assert.h

構文

#define SDL_assert_release(condition) if (assertion_enabled && (condition)) { trigger_assertion; }

引数

boolconditionテストの対象のブール値

詳細

このマクロはSDL_ASSERT_LEVELが1以上の場合に有効になり, そうでない場合は無効になる. このマクロは低コストで極めてまれな失敗のテストでの使用を意図している. 一般的にはリリースビルドでのアサーションの失敗は嫌われるため, これは発生が致命的な場合に限られる. ほとんどの場合アサーションよりも良い方法を検討するべきである.

アサーションが無効の場合, conditionはsizeof演算子で囲まれる. これにより, 関数の呼び出しと副作用は実行されなくなり, アサーションのみ参照する不使用の変数に対して警告も発しないようになる.

環境変数"SDL_assert_release"にいくつかの文字列("abort", "break", "retry", "ignore", "always_ignore")の1つを設定してデフォルトの動作を変えることができる. メインスレッドがGUIインターフェースだが, バックグラウンドスレッドでアサーションデバッグを行うときは, "break"に設定するとデバッガはアプリケーションのUIが悪い影響(デッドロック等)を受けずにアサーションが発生するとすぐにコントロールを得ることができる.

スレッドセーフ

このマクロはどのスレッドからも安全に呼べる.

バージョン

SDL 3.2.0以降

SDL Wikiへのリンク

SDL_assert_release - SDL Wiki