ASSERT_PERROR(3) | Linux Programmer's Manual | ASSERT_PERROR(3) |
名前
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) の出力が含まれる。返り値
値は返されない。準拠
これは GNU による拡張である。バグ
assert マクロの目的は、プログラマがプログラム中のバグを探す手助けをすることであり、コーディング間違いがない場合には何が起こることはありえない。しかしながら、システムコールやライブラリコールの場合、状況がかなり違っていて、エラーが返されることがありえるし、実際あるだろう。そしてそのような状況でもテストされるべきである。この場合には、 NDEBUG を定義することで無効にできる assert ではなく、適切なエラー処理コードで対処すべきである。このマクロは決して使わないこと。関連項目
abort(3), assert(3), exit(3), strerror(3)この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2002-08-25 | GNU |