Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all
名前
assert_perror - test errnum and abort
書式
#define _GNU_SOURCE /* feature_test_macros(7) 参照 */ #include <assert.h> void assert_perror(int errnum);
説明
最後に <assert.h> がインクルードされた時にマクロ NDEBUG が定義されていた場合、マクロ assert_perror() は何のコードも生成せず、したがって全く何もしない。 そうでない場合、マクロ assert_perror() は標準エラーにエラーメッセージを表示し、 errnum が 0 でない場合には abort(3) を呼び出してプログラムを終了させる。 メッセージには、ファイル名、マクロ呼び出し があった関数名と行番号、 strerror(errnum) の出力が含まれる。
返り値
値は返されない。
属性
この節で使用されている用語の説明については、 attributes(7) を参照。 ┌─────────────────┬───────────────┬─────────┐ │インターフェース │ 属性 │ 値 │ ├─────────────────┼───────────────┼─────────┤ │assert_perror() │ Thread safety │ MT-Safe │ └─────────────────┴───────────────┴─────────┘
準拠
これは GNU による拡張である。
バグ
assert マクロの目的は、プログラマがプログラム中のバグを探す手助けをすることであり、コー ディング間違いがない場合には何が起こることはありえない。 しかしながら、システムコールやラ イブラリコールの場合、状況がかなり違っていて、 エラーが返されることがありえるし、実際ある だろう。そしてそのような状況でも テストされるべきである。この場合には、 NDEBUG を定義する ことで無効にできる assert ではなく、適切なエラー処理コードで対処すべきである。 このマクロ は決して使わないこと。
関連項目
abort(3), assert(3), exit(3), strerror(3)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの 説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。