Next: Text handling, Previous: File Inclusion, Up: Top
出力切替え(diversions)は出力を一時的に保存しておく方法です。
m4
では好きなときに出力を一時ファイルへ切替え(divert)ておき、
後で再び出力ストリームへと逆切替え(undiverted)することができます。
切り替え先番号は0から数え上げます。切替え先0は通常の出力ストリームです。
同時に存在できる切替え先の数はそれらの記述に費されるメモリの量によって
主に制限を受けます。これはGNU m4
が切替え先の情報とそこへの出力を
できればメモリに置いておこうとするためです。そして全ての切替え先の分を
あわせたもののために使えるメモリ量には制限があります(現在は512Kです)。
この最大値を超えそうになったときは、一番大きな切替え先の内容を入れるために
一時ファイルが作られ、その分のメモリが他の切替え先のために開放されます。
したがって理論上は切替え先の数が利用可能なファイルディスクリプタの数
によって制限されることもありえます。