assert --- デバッグ支援機能

概要

「assert(論理式)」をC/C++プログラムの中に書いておくと、その論理式が成立しなかった場合に、エラーメッセージを表示して、プログラムがア ボートします。「こうなるはずだ」という論理式を書いてください。

プログラム例

#include <stdio.h>
#include <assert.h>

int main(int argc, char **argv)
{
FILE *pf;
int ccc;

assert(argc == 2);
pf = fopen(argv[1], "r");
assert(pf != NULL);
 while ((ccc = getc(pf) != EOF) {
putc(ccc);
}
return 0;
}

コマンドライン引数にファイル名を指定して、そのファイルの内容を表示するプログラムです。

実行結果

$ ./a.exe
assertion "argc == 2" failed: file "assert.c", line 9
Aborted (core dumped)

naota@SAYAKA ‾/prog/SAMPLE/C
$ ./a.exe nosuchfile
assertion "pf != NULL" failed: file "assert.c", line 11
Aborted (core dumped)

naota@SAYAKA ‾/prog/SAMPLE/C
$

assertを無効にする方法

お勧めはしないのですが、プログラムを高速化するために、どうしてもassert機能を無効にしたい場合には、マクロ「NDEBUG」を定義して、コンパ イルします。

gcc -DNDEBUG sample.c

(C) 2006 石川直太 無保証 BSDライセンス
C/C++ tips に[戻る]
Tips に[戻る]
石川直太のホームページに[戻る]