[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

13. その他の組み込みマクロ

この章では、これまでのどの章にも分類できない様々な組み込みマクロを説明します。


13.1 エラーメッセージを表示する

エラーメッセージはerrprintを使って表示することができます。

 
errprint(message, ...)

このマクロが行うのはmessageと残りの引数を標準エラー出力に表示する ことだけです。

errprintは展開されると消滅します。

 
errprint(`Illegal arguments to forloop
')
error-->Illegal arguments to forloop
⇒

末尾の改行は自動的に印字されません。したがって例にあるように 引数の一部として与えなければなりません。 (BSDフレーバーのm4errprint呼び出しごとに改行を1つ末尾に 付加します。)

エラーの場所を特定するためには、組み込みユーティリティマクロが2つ用意 されています。

 
__file__
__line__

これらは現在の入力ファイルの名前をクォートしたものと そのファイル内での現在の入力行番号に展開されます。

 
errprint(`m4:'__file__:__line__: `Input error
')
error-->m4:56.errprint:2: Input error
⇒

13.2 m4を終了させる

すべての入力を読み込んでしまう前にm4を終了したいときは m4exitを使うことができます。

 
m4exit(opt code)

このマクロはcodeを終了コード(exit code)としてm4を終了させます。 codeを省略したときは終了コードは0になります。

 
define(`fatal_error', `errprint(`m4: '__file__: __line__`: fatal error: $*
')m4exit(1)')
⇒
fatal_error(`This is a BAD one, buster')
error-->m4: 57.m4exit: 5: fatal error: This is a BAD one, buster

この例ではfatal_errorマクロが呼び出された後、m4は終了コード1で 終了します。このマクロはエラー終了だけを行うためのものです、なぜなら通常の 終了手続き、例えば出力切替え先のテキスト(diverted text)の逆切替え (undivert)や保存されているテキスト(see section 入力の保存(save))の再読み込みなどが 行われないからです。


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Akihiro Sagawa on June, 15 2005 using texi2html 1.70.