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/
に書かれている。