アサーション、およびユーザー指定のメッセージ (C++)
C++ 言語をサポートするアプリケーションのデバッグに役立つ 3 種類のエラー処理機能 : #error のディレクティブstatic_assert のキーワードと assert (CRT) マクロ。3 の機能エラー メッセージが表示され2 回はソフトウェアのアサーションをテストします。ソフトウェアのアサーションはプログラムの特定位置にある true となる条件を指定します。コンパイル時のアサーションが失敗した場合コンパイラは診断メッセージおよびコンパイル エラーが発生します。実行時のアサーションが失敗した場合は診断メッセージを表示しアプリケーションを閉じます。
解説
アプリケーションの有効期間はプリプロセスコンパイルおよび実行時のフェーズで構成されます。各エラー処理機能のアクセスは次のフェーズ 1 に使用できる情報をデバッグします。効果的にデバッグするにはこのフェーズに関する適切な情報を提供する機能を選択します :
#error のディレクティブ はプリプロセス時に有効になります。これは無条件にユーザーが指定したメッセージを出力しコンパイル エラーが発生します。メッセージをプリプロセッサ ディレクティブによって処理されますが結果の式は評価されないテキストを挿入できます。
static_assert の宣言はコンパイル時に有効になります。これはブール値に変換できるユーザーが指定した式で表される必要なソフトウェアのアサーションをテストします。式 (FALSE) がゼロになるとユーザーが指定したメッセージが表示されコンパイルはエラーで失敗します。
static_assert の宣言ではテンプレートの引数ユーザーが指定した式に含めることができるためテンプレートをデバッグする場合に特に役立ちます。
assert (CRT) マクロは実行時に有効になります。これはユーザーが指定した式が評価され結果がゼロの場合診断メッセージを表示しアプリケーションを閉じます。そのほかのマクロは_ASSERT と _ASSERTE などこのマクロに似ていますが異なるシステム定義またはユーザー定義の診断メッセージが出力されます。