C/C++ 入門

ホーム > 標準 C ライブラリ > assert - 診断機能

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);
}

void main() {
	foo( 10 );
	foo( -5 );
}

関数 foo で、assert( i > 0 ) としている点に注目してください。

Windows 上の Visual C++ でビルド (cl assert1.c) して実行した結果は次のようになりました。

> assert1
10 ← 10 は 0 より大きいので assert を通過して printf している
Assertion failed: i > 0, file assert1.c, line 5 ← -5 は 0 より
大きくないので assert が診断メッセージを出力してプログラムが終了している。

これによって、assert1.c というソースコードの line 5 (5行目) での評価が失敗したということがわかり、 不具合を修正することが容易になります。

ちなみに assert は通常のエラーチェックに使うものではない ということに注意しましょう。

ホーム > 標準 C ライブラリ > assert - 診断機能