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 はエラーチェックではなく、そのコードを記述する時に想定したこと、必ず真であると考えている状態を記述するためのものです。