GNU-C 互換のコンパイラプリプロセッサ
cpp
predicate\c
[ (\c
value\c
) ]]
[ -C ]
[ -D \c
name\c
[ =\c
definition\c
]]
[ -dD ]
[ -dM ]
[ -I \c
directory\c
]
[ -H ]
[ -I- ]
[ -imacros \c
file\c
]
[ -include \c
file\c
]
[ -idirafter \c
dir\c
]
[ -iprefix \c
prefix\c
]
[ -iwithprefix \c
dir\c
]
[ -lang-c ]
[ -lang-c++ ]
[ -lang-objc ]
[ -lang-objc++ ]
[ -lint ]
[ -M [ -MG ]]
[ -MM [ -MG ]]
[ -MD \c
file \c
]
[ -MMD \c
file \c
]
[ -nostdinc ]
[ -nostdinc++ ]
[ -P ]
[ -pedantic ]
[ -pedantic-errors ]
[ -traditional ]
[ -trigraphs ]
[ -U \c
name\c
]
[ -undef ]
[ -Wtrigraphs ]
[ -Wcomment ]
[ -Wall ]
[ -Wtraditional ]
[ \c
infile\c
| - ]
[ \c
outfile\c
| - ]
b
1
マクロプロセッサ\c
です。
長い記述を簡略してマクロとして定義することができるため、
マクロプロセッサと呼ばれます。
bu
bu
マクロ\c
を定義し、C プリプロセッサがプログラム内の全てのマクロを
その定義で置き換えます。
bu
bu
The C Preprocessor\c
を参照して下さい。
この双方は `\c
cpp.texinfo\c
'から生成されます。GNU C プリプロセッサは ANSI Standard C のスーパセットと
なっています。
infile\c
と
\c
outfile\c
の 2 つのファイル名を期待します。
プリプロセッサは `\c
#include\c
'で指定したファイルと一緒に \c
infile\c
を読み込みます。
入力ファイルの組み合わせで作られた出力は、
全て \c
outfile\c
に書かれます。
infile\c
と \c
outfile\c
の指定に `\c
-\c
'を使用することができます。\c
infile\c
が `\c
-\c
' であれば\c
標準入力からデータを読み、\c
outfile\c
が `\c
-\c
' であれば標準出力へ結果を書きます。もし \c
outfile\c
もしくは両方のファイル名が省略された場合、
省略されたファイルの代わりに標準入力と標準出力が使われます。
-P
-C
-traditional
-trigraphs
-pedantic
-pedantic-errors
-Wtrigraphs
-Wcomment
-Wcomments
-Wall
-Wtraditional
-I directory\c
directory\c
をヘッダファイルを検索するディレクトリリストの末尾に追加します。
このオプションは、指定したディレクトリが
システムのヘッダファイルが格納されているディレクトリよりも先に
検索されるので、ユーザ自身の作成したバージョンで
システムが提供するヘッダファイルを上書きさせることもできます。
1 つ以上の `\c
-I\c
' オプションを使用する場合、ディレクトリは左から右の順番で検索され、
標準のシステムヘッダファイルはその後になります。
-I-
file\c
\c
' のインクルード文の場合にのみ検索されます。`\c
#include <\c
file\c
>\c
' では検索されません。
file\c
\c
' 文に対する最初の検索ディレクトリではなくなります。
それゆえ、カレントディレクトリは明示的に `\c
-I.\c
' として指定された場合にのみ検索されることになります。
`\c
-I-\c
' と `\c
-I.\c
' を双方とも指定することで、どのディレクトリがカレントディレクトリ
の前に、あるいは後に検索されるかを厳密に指定することができます。
-nostdinc
-nostdinc++
-D name\c
name\c
を既定義のマクロとして、`\c
1\c
' に定義します。
-D name = definition
name\c
をマクロとして\c
definition\c
に定義します。\c
definition\c
の内容に制限はありませが、プリプロセッサをシェルやシェルに類似した
プログラムから起動している場合、シェルの文法上意味を持つスペース
などの文字を保護するため、そのシェルのクォート文法を使用する必要が
あります。もし、1 つの
name\c
に対して複数の `\c
-D\c
' を指定したならば、もっとも右側の定義が有効となります。
-U name\c
name\c
を定義しません。同一の \c
name\c
に対して `\c
-U\c
' と `\c
-D\c
' の双方が指定された場合、`\c
-U\c
' が `\c
-D\c
' に優先し、 \c
name\c
は定義されません。
-undef
-A name( value )
name\c
にトークンリスト \c
value\c
をアサートします。シェルのコマンドライン上では括弧を
エスケープするなりクォートすることを忘れないで下さい。
-dM
-dD
しません\c
。また、`\c
#define\c
' コマンドとプリプロセス結果の\c
双方\c
を出力します。これらの出力は両方とも標準出力に行われます。
-M [ -MG ]
-MM [ -MG ]
file\c
\c
' でインクルードされるファイルのみを扱う点が異なります。`\c
#include
<\c
file\c
>\c
' でインクルードされるシステムヘッダファイルは無視されます。
-MD file
file\c
' に書き出されます。em`\c
-MD\c
' を指定したファイルの処理もこれに加えて行われ、`\c
-M\c
' のように通常の処理を抑制することはありません。
file\c
' 引数を指定してはいけません。gcc は、入力ファイル名の末尾の
`\c
' を `\c
' で置き換えたファイル名を出力に用いるからです。
-MMD file
-H
-imacros file\c
file\c
を入力として処理しますが、
標準の入力ファイルを処理する前にその結果の出力を破棄します。
file\c
によって生成される出力は捨てられるため、`\c
-imacros \c
file\c
\c
' の処理結果の影響は、\c
file\c
中に記述されたマクロがメインの入力ファイル中で使用可能になることだけです。
プリプロセッサは、`\c
-imacros\c
file\c
' を処理する前に、
コマンドラインから与えられた全ての `\c
-D\c
' や `\c
-U\c
' オプションを評価します。
-include file\c
file\c
を、標準の入力ファイルの前に処理し、その結果出力をインクルードします。
-idirafter dir
dir\c
を第 2 インクルードパスに加えます。第 2 インクルードパス中の
ディレクトリは、メインインクルードパス (オプション
`\c
-I\c
' によって追加されます) 中にヘッダファイルを探した結果
発見できなかった場合に検索されます。
-iprefix prefix
prefix\c
を、その後に続く `\c
-iwithprefix\c
'
オプション用のプレフィックスとして使用します。
-iwithprefix dir
prefix\c
と \c
dir\c
を連結することによって得られます。ここで \c
prefix
は `\c
-iprefix\c
' オプションによって指定されたものです。
-lang-c
-lang-c++
-lang-objc
-lang-objc++
-lint
-$
The C Preprocessor\c
, Richard M. Stallman.
中のエントリ
` cpp '
gcc ( 1 );
info\c
;
Using and Porting GNU CC (for version 2.0)\c
, Richard M. Stallman.
中のエントリ
` gcc '