Provided by: manpages-ja-dev_0.5.0.0.20210215+dfsg-1_all
名前
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)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。