目次 - SDL 3.0 API(機能別) - アサーション
アサーション
概要
有用なアサーション(検証)マクロ.
SDLアサーションは通常のアサーションマクロと似ているが, 次の様な特徴がある:
- sizeofを巧妙に使うことで, 検証を無効化してコンパイルするコードから除外したとき, アサーションが参照する変数が使用されなくなってもコンパイラが警告を発しないようになっている.
if (x) SDL_assert(y); else do_something();
のような「ぶらさがりelse(dangling-else)」でも安全に使用できる.
- 様々な環境のCコンパイラやランタイムでも同じように動作する.
- 有か無しかのどちらかではなく, 複数のレベルのアサーション(SDL_assert, SDL_assert_release, SDL_assert_paranoid)が用意されている.
- 検証に失敗したとき様々な対応(リトライ, デバッガの呼び出し, プログラムの中断, 1回目を無視する, 無視して残りのプログラムを実行する)を提供している.
- デフォルトでは可能ならばユーザにダイアログを表示するが, 検証失敗時にコールバックさせることもできる.
- 失敗した検証の再検証を行える. ネットワークを失敗させ, ケーブルを接続した後にもう一度テストするなどが可能.
- ユーザに検証の失敗を無視させることができる. 無害な問題が発生して残りの処理を実行したい場合など.
- ユーザに残りのプログラムの実行のために無視する検証をマークさせることができる. 無害な問題が発生し続ける場合など.
- アプリケーションの全ての失敗した検証の統計とデータを提供する.
- 自動化スクリプトで制御する場合などのために, 環境変数でデフォルトのアサーションハンドラを制御できる.
- Clangの静的解析の補助として使える. アナライザはSDLアサーションを常に成功として扱う(あなたが問題を解決する, そしてデバッグビルドで問題を検出するとみなすため). これはアナライザが失敗とする可能性を避けることを助ける.
使い方: あなたのコードをチェックするテストを配置して, デバッグビルドでコンパイルするだけである.
関数
- SDL_GetAssertionHandler
- SDL_GetAssertionReport
- SDL_GetDefaultAssertionHandler
- SDL_ReportAssertion
- SDL_ResetAssertionReport
- SDL_SetAssertionHandler
型
- SDL_AssertionHandler
構造体
- SDL_AssertData
列挙体
- SDL_AssertState
マクロ
- SDL_assert
- SDL_assert_always
- SDL_ASSERT_LEVEL
- SDL_assert_paranoid
- SDL_assert_release
- SDL_AssertBreakpoint
- SDL_disabled_assert
- SDL_enabled_assert
- SDL_FILE
- SDL_FUNCTION
- SDL_LINE
- SDL_NULL_WHILE_LOOP_CONDITION
- SDL_TriggerBreakpoint
SDL Wikiへのリンク
SDL3/CategoryAssert - SDL Wiki