ASSERT
Section: Linux Programmer's Manual (3)
Updated: 2002-08-25
Index
JM Home Page
roff page
名前
assert - 診断が偽の時にプログラムを中止する
書式
#include <assert.h>
void assert(scalar expression);
説明
<assert.h>
が最後にインクルードされた時点で、
NDEBUG
マクロが定義されていた場合、
assert()
マクロは何のコードも生成せず、従って全く何もしない。
さもなければ、
assert(3)
マクロは
expression
が偽の時(すなわち、比較の結果が0と等しい時)に
標準エラー出力にエラーメッセージを表示し、さらに
abort()
を呼び出すことによって、プログラムを終了させる。
このマクロの目的は、プログラマーがプログラムのバグを発見する手助けを
することである。"assertion failed in file foo.c, function do_bar(), line 1287"
というメッセージはユーザーには何の助けにもならない。
返り値
値は返されない。
準拠
POSIX.1-2001, C89, C99.
C89 では
expression
は
int
型であることが必要とされ、そうでない場合の動作は未定義とされていた。
しかし C99 ではどのようなスカラ値でもよいことになった。
バグ
assert()
は、マクロとして実装されている。すなわち、
試されている式が副作用を持っている場合には、
マクロ
NDEBUG
が定義されているかどうかに依存して、プログラムの振舞いは異なるだろう。
これによって、バグ出しするときには消えてしまう
ハイゼンバグ(Heisenbugs)を生み出すだろう。
関連項目
abort(3),
assert_perror(3),
exit(3)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- 準拠
-
- バグ
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:31:32 GMT, November 19, 2007