assert - 診断機能
assert というのは標準 C ライブラリに含まれている診断機能です。
assert を利用するには assert.h をインクルードします。
assert には必ず真になる評価式を渡します。
そして、評価した結果が真 (true) なら素通り、偽 (false) なら診断メッセージを出力してプログラムを終了 (アボート) します。
まずは実際の使い方をみてみましょう。
次のコードを assert1.c とします。
#include <assert.h>
#include <stdio.h>
void foo(int i) {
assert(i > 0);
printf("%d\n", i);
}
int main() {
foo(10);
foo(-5);
return 0;
}
関数 foo で、assert( i > 0 ) としている点に注目してください。
この実行結果は次のようになりました。
10
Assertion failed: (i > 0), function foo, file ../src/Test1.c, line 5.
これによって、Test1.c というソースコードの line 5 (5行目) での評価が失敗したということがわかり、 不具合を修正することが容易になります。
ちなみに assert は通常のエラーチェックに使うものではない ということに注意しましょう。
assert はエラーチェックではなく、そのコードを記述する時に想定したこと、必ず真であると考えている状態を記述するためのものです。