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ではなくなったら、
エラーメッセージが表示され、プログラムが即終了します。