Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all
名前
assert - 診断が偽の時にプログラムを中止する
書式
#include <assert.h> void assert(scalar expression);
説明
このマクロは、プログラマが、プログラムのバグを見つけたり、例外的な場面を (限定的なデバッグ 出力を行う) クラッシュで処理するのに役立つ。 expression が偽 (false) の場合 (つまり expression が 0 と比較して等しい場合)、 assert() は エラーメッセージを標準エラーに表示し、 abort(3) を呼び出してプログラムを終了する。エラー メッセージには、以下のように、ファイル名、 assert() の呼び出しを含む関数名、呼び出しのソー スコードの行番号、引数のテキストが含まれる。 prog: some_file.c:16: some_func: Assertion `val == 0' failed. <assert.h> が最後にインクルードされた時点で、 NDEBUG マクロが定義されている場合、 assert() マクロは何のコードも生成せず、したがって全く何もしない。 assert() を使ってエラー条件を検出 している場合に NDEBUG を定義するのは推奨されない。ソフトウェアの動作が非決定的になってしま う可能性があるからである。
返り値
値は返されない。
属性
この節で使用されている用語の説明については、 attributes(7) を参照。 ┌─────────────────┬───────────────┬─────────┐ │インターフェース │ 属性 │ 値 │ ├─────────────────┼───────────────┼─────────┤ │assert() │ Thread safety │ MT-Safe │ └─────────────────┴───────────────┴─────────┘
準拠
POSIX.1-2001, POSIX.1-2008, C89, C99. C89 では expression は int 型であることが必要とさ れ、そうでない場合の動作は未定義とされていた。 しかし C99 ではどのようなスカラ値でもよいこ とになった。
バグ
assert() は、マクロとして実装されている。すなわち、評価されている式が副作用を持っている場 合には、プログラムの振舞いは、マクロ NDEBUG が定義されているかによって異なるだろう。このた め、デバッグを有効にすると消えてしまうハイゼンバグ (Heisenbugs) が起こることがある。
関連項目
abort(3), assert_perror(3), exit(3)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの 説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。