assert (CRT)
結果がの false診断メッセージを表示してプログラムが中断された場合式を評価します。
void assert(
int expression
);
パラメーター
- expression
の値が 0 に評価される式はポインター)。
解説
false に評価するに expression の引数を実行して assert マクロは通常プログラムの開発中に論理エラーを識別するためにプログラムが正しく動作している場合にのみ使用されます。デバッグ完了するとアサーションによるチェックはソース ファイルは変更しないで NDEBUG 識別子を定義してオフにできます。NDEBUG は /D のコマンド ライン オプションまたは #define のディレクティブで定義できます。NDEBUG が #define で定義されている場合ディレクティブは ASSERT.H を含む前に記述する必要があります。
assert は expression が false (0) になりプログラムの実行が終了する 中止 を呼び出すと診断メッセージが出力されます。アクションは expression が true は実行されません (以外)。診断メッセージはソース ファイルの失敗の式アサーションが失敗した名前と行番号が含まれます。
診断メッセージはワイド文字に出力されます。したがって式に Unicode 文字でも問題なく機能します。
診断メッセージ出力先はルーチンを呼び出してしたアプリケーションの種類によって異なります。コンソール アプリケーションは stderr してメッセージを常に表示されます。Windows ベースのアプリケーションではassert は[] ボタンの ENT0ENT とともにメッセージを表示するメッセージ ボックスを作成できるように MessageBox Windows の関数を呼び出します。ユーザーが [ENT0ENT] をクリックするとすぐに中止します。
アプリケーションがランタイム ライブラリのデバッグ バージョンとリンクしたときassert は 3 個のボタンを使用してメッセージ ボックスを作成します : 中止 再試行 と 無視 。ユーザーが [ENT0ENT] をクリックするとプログラムはすぐに中止します。ユーザーが [ENT0ENT] をクリックするとデバッガーが呼び出されJust-In-Time デバッグが有効になっている場合ユーザーはプログラムを (JIT) デバッグできます。ユーザーが [ENT0ENT] をクリックしassert は通常の実行を続ける : [入力] ENT2ENT のボタンを使用してメッセージ ボックスを作成します。エラー条件が未定義の動作が発生する可能性がある場合 ENT0ENT [] をクリックすることに注意してください。
CRT デバッグする方法の詳細についてはCRT デバッグ技術 を参照してください。
assert ルーチンはC ランタイム ライブラリのリリース バージョンとデバッグ バージョンの両方で使用できます。2 つが他のアサーションのマクロ_ASSERT と _ASSERTE はを使用できますが_DEBUG フラグが定義されている場合のみ渡された式を評価します。
必要条件
ルーチン |
必須ヘッダー |
---|---|
assert |
<assert.h> |
使用例
このプログラムではanalyze_string の関数は文字列と長さに関連する複数の条件をテストするには assert の関数を使用します。条件のいずれかが失敗するとプログラムがメッセージの失敗の原因となった行数を示すを出力します。
// crt_assert.c
// compile with: /c
#include <stdio.h>
#include <assert.h>
#include <string.h>
void analyze_string( char *string ); // Prototype
int main( void )
{
char test1[] = "abc", *test2 = NULL, test3[] = "";
printf ( "Analyzing string '%s'\n", test1 ); fflush( stdout );
analyze_string( test1 );
printf ( "Analyzing string '%s'\n", test2 ); fflush( stdout );
analyze_string( test2 );
printf ( "Analyzing string '%s'\n", test3 ); fflush( stdout );
analyze_string( test3 );
}
// Tests a string to see if it is NULL,
// empty, or longer than 0 characters.
void analyze_string( char * string )
{
assert( string != NULL ); // Cannot be NULL
assert( *string != '\0' ); // Cannot be empty
assert( strlen( string ) > 2 ); // Length must exceed 2
}
同等の .NET Framework 関数
System:: Diagnostics:: デバッグ :: Assert