#include <error.h> void error(int status, int errnum, const char *format, ...); void error_at_line(int status, int errnum, const char *filename, unsigned int linenum, const char *format, ...); extern unsigned int error_message_count; extern int error_one_per_line; extern void (* error_print_progname) (void);
error() で出力されるプログラム名は、大域変数 program_invocation_name(3) の値である。 program_invocation_name の初期値は main() の argv[0] の値と等しい。 この変数の値は変更可能であり、変更すると error() の出力が変わる。
status が 0 以外の場合、 error() は exit(3) を呼び出して、指定された終了ステータスでプログラムを終了させる。
error_at_line() 関数は、引き数 filename と linenum が追加されている以外は、 error() と同じである。 生成される出力は、プログラム名の後に コロン・filename の値・コロン・linenum の値が書き出される以外は、 error() と同じである。 プリプロセッサの値 __LINE__ と __FILE__ は、 error_at_line() を呼び出すときに役に立つ。 その他のプリプロセッサの値も使うことができる。 例えば、これらの引き数で入力ファイルにおける位置を参照できる。
大域変数 error_one_per_line が 0 以外に設定されている場合、 filename と linenum の値が共に等しい error_at_line() の呼び出しは、 1 つの (最初の) メッセージの出力にまとめられる。
大域変数 error_message_count は、 error() と error_at_line() で出力されたメッセージの数を表す。
大域変数 error_print_progname に 関数のアドレスが割り当てられている場合 (つまり NULL ではない場合)、 メッセージの前にプログラム名とコロンを書き出すのではなく、 この関数を呼び出す。 この関数は標準エラー出力 (stderr) に対しての適切な文字列を書き出さなければならない。