Provided by: manpages-ja-dev_0.5.0.0.20140515+dfsg-2_all bug

名前

       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 では expressionint 型であることが必要とされ、そうでない場
       合の動作は未定義とされていた。 しかし C99 ではどのようなスカラ値でもよいことになった。

バグ

       assert()   は、マクロとして実装されている。すなわち、 試されている式が副作用を持っている場
       合には、 マクロ NDEBUG  が定義されているかどうかに依存して、プログラムの振舞いは異なるだろ
       う。 これによって、バグ出しするときには消えてしまう ハイゼンバグ(Heisenbugs)を生み出すだろ
       う。

関連項目

       abort(3), assert_perror(3), exit(3)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 3.65 の一部  である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。