総合手引 | セクション 1 | English | オプション |
unifdef
ユーティリティは
#if, #ifdef, #ifndef, #elif, #else, #endif
行に働きますが、
#if
と
#elif
行の式文法のよく使われるサブセットしか理解しません。
コマンドラインで定義されたシンボルの整数値や
defined()
オペレータがコマンドラインで define したり、undefine したシンボルや
演算子
amp;!, <, >, <=, >=, ==, !=, &&, ||
と括弧で囲まれた式を扱うことができます。
より複雑なものはそのまま無傷で通過させます。
#ifdef
と
#ifndef
ディレクティブはシンボルがコマンドラインで指定された場合だけ
処理されます。その他の場合には変更されずに、素通りさせます。
デフォルトでは、定数式を持つ
#if
と
#elif
の行は無視しますが、コマンドラインに
unifdef ユーティリティにはコメントやバックスラッシュによる行継続 で無効にされたディレクティブも理解することができます。 また、普通ではない形式のプリプロセッサディレクティブを指摘することで、 レイアウトが変になりすぎてもう扱えないことを検知します。
unifdefall シェルスクリプトはファイルから cpp(1) の条件処理ディレクティブをすべて削除することができます。 すべての制御シンボルとその定義 (または未定義) のリストを得るために、 Fl と cpp を使用します。 それからそのファイルを処理するのに適切な引数を付けて unifdef を呼び出します。
利用可能なオプション :
| |
定義されるシンボルを指定します。
また、オプションで
#if
と
#elif
ディレクティブを操作するためにシンボルに与える値を指定します。
| |
| |
未定義にするシンボルを指定します。
同じシンボルを複数指定した場合には、
最後に指定されたものが有効になります。
| |
| |
| |
| |
unifdef
は入力行を 1 度に 1 行ずつ処理しますので、
複数行にまたがるプリプロセッサディレクティブを削除できません。
もっとも一般的な例は、
複数行にわたって右側にぶらさがるコメントが付く、ディレクティブです。
デフォルトでは、
unifdef
がそのようなディレクティブを処理するときは、行が分かりにくいと文句を言います。
| |
| |
定数式を持つ
#if
と
#elif
の行を処理します。
デフォルトでは、このような行で制御される部分は変更されずに素通りされます。
なぜなら、これらは典型的には
"#if 0"
で始まり、未来または過去の開発の概要を記述するコメント的に使用されるからです。
通常のコメントを削除してしまうことが失礼かもしれないのと同様、
これらを削除してしまうのは失礼かもしれません。
| |
| |
削除される行を削除する代わりに空行に置き換えます。
| |
| |
通常の入力ファイルを処理する代わりに、
このオプションは
unifdef
に
unifdef
が理解する式に現れたシンボルのリストを生成させます。
それは、
cpp(1)
の
| |
| |
C 言語のコメントと行の継続の解釈を禁止します。
通常のテキストファイル等に
unifdef
を適用する場合に有用です。
| |
| |
#ifdef
を無視します。C 言語のコードで
#ifdef
をコメントや作りかけのコードのような
C 言語でない部分を区切るために用いている場合は、
unifdef
が
#ifdef
の中のコメントや行の継続を解析しないように
どのシンボルがその目的で使用されているかを指示する必要があります。
無視するシンボルを指示する方法は
| |
| |
unifdefall に追加の場所にある #include ファイルを探すように指示します。 cpp(1) との互換性と unifdefall の実装を簡単にするために unifdef はこのオプションは無視します。 | |
unifdef ユーティリティはその出力を stdout にコピーします。 file 引数が指定されなかった場合は stdin から読み込みます。
unifdef
ユーティリティは
diff(1)
の
多過ぎるネストレベルを検出します。 | |
不適切な #elif, #else, #endif を検出します。 | |
分かりにくいプリプロセッサ制御行を検出します。 | |
早過ぎる EOF を検出します (もっとも最近の未完了の #if の行番号を表示します)。 | |
コメント中の EOF を検出します。 | |
(コメントまたはバックスラッシュと改行によって) 複数の物理行にまたがるプリプロセッサ制御行は、 すべての状況において正しく扱われるわけではありません。
トライグラフは認識されません。
ソースファイル中の複数の場所で異なった定義を持つシンボルはサポートされません。
テキストモードおよび機能無視は、最近の cpp(1) の動作とは対応していません。
UNIFDEF (1) | September 24, 2002 |
総合手引 | セクション 1 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | If you have an emergency I'm great at running around and flailing my arms | ” |
— Artur Bagyants |