関数名:assert
ヘッダー ファイル: <assert.h>
関数プロトタイプ:voidassert(intexpression);
機能: 式が正しいかどうかを確認します
パラメータ: 式 値が false (つまり 0) の場合、まずエラー メッセージを stderr に出力し、次に abort を呼び出してプログラムを終了します。
戻り値: 戻り値なし
補充:
1. 頻繁に呼び出しを行うと、プログラムのパフォーマンスに大きな影響を及ぼし、追加のオーバーヘッドが増加します。デバッグ後、#include <assert.h> を含むステートメントの前に #define NDEBUG を挿入することでアサート呼び出しを無効にできます。
2. 関数の最初に渡されたパラメータの正当性を確認します。
3. 各アサートは 1 つの条件のみをテストします。これは、複数の条件が同時にテストされると、アサーションが失敗した場合に、どの条件が失敗したかを直感的に判断することができないためです。
4. 環境を変更するステートメントは使用できません。これを行うと、実際の実行時にプログラムが Assert ステートメントを無視するときに次のような問題が発生します。
間違い:
アサート(i++<100);
これは、実行前にエラー (i=100 など) が発生した場合、このステートメントは実行されず、i++ コマンドも実行されないためです。
正しい:
アサート(i<100);i++;
5. 論理的および視覚的な一貫性を持たせるために、assert と次のステートメントの間に空行を入れる必要があります。
6. 場所によっては、assert は条件付きフィルタリングを置き換えることができません。 Assert は、例外を処理するためではなく、明らかなエラーを回避するために使用されます。エラーと例外は異なります。エラーは発生してはなりません。例外は避けられません。 C言語の例外は条件判断によって処理できますし、他の言語にも独自の例外処理機構があります。 Assert を使用するための非常に簡単なルールは、メソッドまたは関数の先頭で使用することです。メソッドの途中で使用する場合は、それが適切かどうかを慎重に検討する必要があります。関数プロセスはメソッドの開始時点では開始されておらず、関数プロセスの実行中に発生する問題はほとんどすべて例外です。
プログラム例:変数a<80をアサートし、結果を出力
#include<assert.h>#include<stdio.h>intmain(void){inta=50;assert(a<80);//a<80 をアサートし、0 の場合はエラー メッセージを出力してプログラムを終了します、それ以外の場合は、 printf (Assertaistruen);return(0);} の実行を継続します。
実行結果:
アサーティトゥルー