UNIFDEF(1) — NEWS-OS Programmer’s Manual
名称
unifdef − ifdef ラインの削除
形式
unifdef [ −t −l −c −Dsym −Usym −idsym −iusym ] ... [ file ]
解説
unifdef は、ifdef に該当する行をファイルから削除したり、 他の部分はそのままにしておくということに使用します。 unifdef は、機能を低下させたCのプリプロセッサのようなものです。 C の文法でのネストされた ifdef、コメント、単一および二重の引用符を 取り扱うには充分に気がきいていますが、 ファイルの取り込みやマクロ処理の作業はできません。 コメントも、認識し無視しますが、除去はしません。 定義済み −Dsym か未定義 −Usym のどちらのシンボルを希望するかを指定します。 するとこれらの ifdef 内の行は、 適切に、出力にコピーあるいは削除されます。 sym と関わる ifdef、ifndef、else、endif 行も削除されます。 指定していないシンボルの影響を受ける ifdef は、 連携した ifdef、else、endif 行とともにそのままで出力にコピーされます。 ifdef X が 他の ifdef X にネストされた場合、 内部 ifdef は未確認のシンボルのように処理されます。 同じシンボルが 1つ以上の引数に現れる場合、 最初に遭遇したものが意味があるとされます。
−l オプションにより、 unifdef は、消去された行を削除する代わりに空行で置き換えます。
例えばコメントや作成中のプログラムのように、 Cプログラムでない行を区切るために ifdef を使用する場合、 ifdef で囲まれた行の中での引用文やコメントを解釈しないで済むように、 どのシンボルをそのために使用するかを unifdef に伝えなければなりません。 特定の ifdef の中の行を、無視して出力にコピーしたい場合、 −idsym と −iusym を上記 −Dsym と −Usym 同様に指定します。
単純な文章 (Cプログラムでなく) に unifdef を使用したければ、 −t オプションを使用します。これにより、 unifdef がコメントと単一および二重の引用符を認識しようとする事を抑制します。
unifdef は出力を stdout にコピーし、 file 引数が与えられていなければ、 stdin から入力を受け取ります。 −c 引数が指定されていれば、 unifdef の動作は逆になります。 すなわち、削除あるいは空白にされるべき行が残され、 残されるべき行が削除されます。
関連事項
診断
Premature EOF, inappropriate else or endif.
終了ステータスは、出力が入力の全くのコピーである場合は 0、 そうでなければ 1、おかしな事があれば 2 となります。
バグ
以下のような cpp 構文をどう処理するかは分かりません。
#ifdefined(X) || defined(Y)
著者
Dave Yost
NEWS-OSRelease 4.1C