cpp(1) GNU Tools cpp(1)
名称
cpp - GNU-C 互換のコンパイラプリプロセッサ
書式
cpp [-$] [-Apredicate[(value)]] [-C] [-Dname[=definition]] [-dD]
[-dM] [-I directory] [-H] [-I-] [-imacros file] [-include file]
[-idirafter dir] [-iprefix prefix] [-iwithprefix dir] [-lang-c]
[-lang-c++] [-lang-objc] [-lang-objc++] [-lint] [-M [-MG]]
[-MM [-MG]] [-MD file ] [-MMD file ] [-nostdinc] [-nostdinc++]
[-P] [-pedantic] [-pedantic-errors] [-traditional] [-trigraphs]
[-Uname] [-undef] [-Wtrigraphs] [-Wcomment] [-Wall]
[-Wtraditional]
[infile|-] [outfile|-]
解説
C プリプロセッサは、実際のコンパイルの前にプログラムを変換するために C
コンパイラから自動的に利用される マクロプロセッサです。長い記述を簡略し
てマクロとして定義することができるため、マクロプロセッサと呼ばれます。
C プリプロセッサは、以下の4つの機能を提供します。
· ヘッダファイルを読み込みます。これはプログラムに組み込まれる (C
言語の)宣言の入ったファイルです。
· C 言語の任意の部分の省略形として マクロを定義し、C プリプロセッ
サがプログラム内の全てのマクロをその定義で置き換えます。
· 条件文の処理をします。専用のプリプロセッサコマンドを用いて、いろ
いろな条件にしたがってプログラムの一部を含めたり除外したりできま
す。
· 行番号の制御をします。ソースファイルとコンパイルされた中間ファイ
ルとを組み合わせたり再アレンジしたりするプログラムを用いる場合、
コンパイラにオリジナルのソースの何行目であるかを知らせるための、
行番号制御のプリプロセッサコマンドを利用できます。
C プリプロセッサは、そのインプリメントによって細かな部分に違いがいくつ
かあります。GNU C プリプロセッサの完全なドキュメントは、 info ファイ ル
の ‘cpp.info’, もしくは、マニュアルの The C Preprocessorを参照して下さ
い。この双方は ‘cpp.texinfo’から生成されます。GNU C プリプロセ ッ サ は
ANSI Standard C のスーパセットとなっています。
ANSI Standard C では、今日 C プログラムで一般的に用いられている多くの (
無害な)構造が認められていません。この非互換性はユーザにとっては不便であ
り 、そのため GNU C preprocessor ではこの記述をデフォルトで受け付けるよ
うに作られています。厳密にいえば、 ANSI Standard C にするためにはオプシ
ョ ンとして ‘-trigraphs’, ‘-undef’, ‘-pedantic’をつけなければなりません
。しかし経験則から、厳密な ANSI Standard C にあわせてこうした設定を行な
うと支障のある場合が多いことがわかっています。
ほ とんどの場合は、C プリプロセッサは明示的に実行する必要はありません。
C コンパイラが自動的に実行してくれるからです。しかしながら、明示的に プ
リプロセッサを実行するのが有効なことが個々にはあります。
C プリプロセッサは、引数として infile と outfileの 2 つのファイル名を期
待します。プリプロセッサは ‘#include’で指定したファイルと一緒に infile
を 読み込みます。入力ファイルの組み合わせで作られた出力は、全て outfile
に書かれます。
infile と outfile の指定に ‘-’を使用することができます。infile が ‘-’
で あれば 標準入力からデータを読み、outfile が ‘-’ であれば標準出力へ結
果を書きます。もし outfile もしくは両方のファイル名が省略された場合、省
略されたファイルの代わりに標準入力と標準出力が使われます。
オプション
以下が C プリプロセッサが受け付けるオプションの一覧です。これらのオプシ
ョンは、プリプロセッサがコンパイラから起動されている場合にも自動的に 引
き渡されるので、 C プログラムをコンパイルする際にも指定することができま
す。
-P ‘#’-行番号という行番号情報をプリプロセッサの出力に含めません。こ
れは、C 以外の言語で行番号情報が含まれているとエラーを起こす言語
を処理する場合に有用でしょう。
-C コメントを削除せず、そのまま出力ファイルに含めます。マクロ呼び出
しの引数に現れるコメントはマクロ呼び出しの展開後にコピーされます
。
-traditional
ANSI ではなく、旧形式の C の文法として解釈します。
-trigraphs
ANSI標準のトリグラフ(trigraph)構文を処理します。これは ANSI C で
1 文字を表示すると定められた ‘??’ で始まる 3 文字の並びです。例
えば、‘??/’ は ‘\’ を表しますので、‘’??/n’’ は改行文字の文字定数
となります。厳密に言えば、GNU C プリプロセッサの ‘-trigraphs’ オ
プションは ANSI C 標準を完全にはサポートしません。が、普通のユー
ザならばその違いに気づく事は稀でしょう。
トリグラフについて、これ以上知りたいとは思わないでしょ?
-pedantic
‘#else’ や ‘#endif’ の後にコメント以外のテキストがつくといった場
合に、 ANSI C 標準で求められる警告を出力します。
-pedantic-errors
‘-pedantic’ に似ていますが、警告ではなくエラーにします。
-Wtrigraphs
トリグラフがあると警告を出力します(ただし、トリグラフの処理は 行
います)。
-Wcomment
-Wcomments
コメント開始シーケンスである ‘/*’ がコメント中に存在したならば警
告を発生します (両形式は同じ効果を持ちます)。
-Wall ‘-Wtrigraphs’ と ‘-Wcomment’ (ただし ‘-Wtraditional’ は除く) を
指定したのと同じです。
-Wtraditional
ANSI と伝統派の C とで異なる振る舞いをとる構文が出現した場合に警
告を発します。
-I directory
ディレクトリ directory をヘッダファイルを検索するディレクトリリ
ストの末尾に追加します。このオプションは、指定したディレクトリが
システムのヘッダファイルが格納されているディレクトリよりも先に検
索されるので、ユーザ自身の作成したバージョンでシステムが提供する
ヘッダファイルを上書きさせることもできます。 1 つ以上の ‘-I’ オ
プションを使用する場合、ディレクトリは左から右の順番で検索され、
標準のシステムヘッダファイルはその後になります。
-I- ‘-I-’ オプションよりも前に指定された ‘-I’ オプションで与えられた
ディレクトリは、‘#include "file"’ のインクルード文の場合にのみ検
索されます。‘#include
コロナウイルスの日ごとの感染者数・死者数をグラフ化してみました。どの国が増加傾向にあり、どの国が終息に向かっているかを視覚化しています。
Copyright(C) linux-cmd.com All Rights Reserved. Author Takayuki Yukawa