C言語 assertとは?assertの使い方

assert は、デバッグ時に大いに役立つ関数です。

assert(アサート)関数の引数には、式を渡します。

その式を評価し、真なら何もしませんが、
偽の場合は、メッセージボックスで情報を出力し、
プログラムを終了させます。

情報には、ファイル名、ファイルの行番号が記載されます。

assertコードを無効にしたい時は、
#define 定数の NDEBUG を定義します。

NDEBUG を定義する位置は、
#include <assert.h>より前でなくてはなりません。

NDEBUG を定義すると、
assert関数コードが無効化されるので、

デバッグコードを残しながら、
完成版アプリケーションを作成する事ができます。

#include <stdio.h>
// NDEBUGを定義する場合は、ここより前
#include <assert.h>

void main(void) {
      int a=10, b=5, g=0;

      g = a + b;

      assert(g==15);

      printf("%d\n", g);

}

この例では、「g が15であるはずだ」と言う式をassert関数に渡します。

多分15なので、プログラムはそのままgを表示して終了します。

この時、何らかの影響により、gが15ではなくなったら、

エラーメッセージが表示され、プログラムが即終了します。