これは、Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、MACOSオンラインエミュレーターなどの複数の無料オンラインワークステーションの5つを使用してOnWorks無料ホスティングプロバイダーで実行できるコマンドcpp-XNUMXです。
プログラム:
NAME
cpp-Cプリプロセッサ
SYNOPSIS
cpp [-Dマクロ[=定義] ...] [-Uマクロ]
[-IDIR...] [-iquoteDIR...]
[-W警告する...]
[-M|-んん] [-MG] [-MF ファイル名]
[-MP] [-MQ ターゲット...]
[-MT ターゲット...]
[-P] [-fno-作業ディレクトリ]
[-x 言語] [-std =標準]
ファイル内 アウトファイル
最も便利なオプションのみがここにリストされています。 残りについては、以下を参照してください。
DESCRIPTION
しばしば知られているCプリプロセッサ cppであり、 マクロ プロセッサ によって自動的に使用されます
コンパイル前にプログラムを変換するCコンパイラ。 それはマクロと呼ばれます
プロセッサを定義できるため マクロ、これは長い間短い略語です
構成します。
Cプリプロセッサは、C、C ++、およびObjective-Cソースコードでのみ使用することを目的としています。
過去には、一般的なテキストプロセッサとして悪用されてきました。 それは入力で窒息します
Cの字句規則に従わない。 たとえば、アポストロフィは次のように解釈されます。
文字定数の始まり、およびエラーを引き起こします。 また、あなたはそれに頼ることはできません
Cファミリの言語にとって重要ではない入力の特性を保持します。
Makefileが前処理されると、すべてのハードタブが削除され、Makefileは削除されます。
動作しません。
そうは言っても、Cではないものにcppを使用することで逃げることができることがよくあります。その他
アルゴル風のプログラミング言語は安全であることがよくあります(Pascal、Adaなど)。
注意。 -従来の-cpp モードはより多くの空白を保持し、それ以外の場合はより多く
寛容。 問題の多くは、CまたはC ++スタイルのコメントを書くことで回避できます。
母国語のコメントの代わりに、マクロをシンプルに保ちます。
可能な限り、作成している言語に合わせたプリプロセッサを使用する必要があります
最新バージョンのGNUアセンブラには、マクロ機能があります。 最も高いレベル
プログラミング言語には、独自の条件付きコンパイルおよび包含メカニズムがあります。 もしも
他のすべてが失敗した場合は、GNUM4などの真の一般的なテキストプロセッサを試してください。
Cプリプロセッサは細部が異なります。 このマニュアルでは、GNUCプリプロセッサについて説明します。
ISO標準Cの機能の小さなスーパーセットを提供します。デフォルトモードでは、GNU
Cプリプロセッサは、標準で要求されるいくつかのことを実行しません。 これらは機能です
これはめったに使用されず、の意味に驚くべき変化を引き起こす可能性があります
それらを期待しないプログラム。 厳密なISO標準Cを取得するには、
-std = c90, -std = c99 or -std = c11 標準のどのバージョンに応じて、オプション
欲しいです。 すべての必須診断を取得するには、次も使用する必要があります -衒学者.
このマニュアルでは、ISOプリプロセッサの動作について説明します。 不必要を最小限に抑えるために
ISOプリプロセッサの動作が従来の動作と競合しない違い
セマンティクスでは、従来のプリプロセッサは同じように動作する必要があります。 さまざまな
存在する違いについては、セクションで詳しく説明します 伝統的な モード.
明確にするために、特に明記しない限り、 CPP このマニュアルでは、GNUCPPを参照してください。
OPTIONS
Cプリプロセッサは、引数としてXNUMXつのファイル名を想定しています。 ファイル内 と アウトファイルを選択します。
プリプロセッサの読み取り ファイル内 それが指定する他のファイルと一緒に #include。 すべて
結合された入力ファイルによって生成された出力は、 アウトファイル.
どちらでも ファイル内 or アウトファイル 多分 -、 ファイル内 標準入力から読み取ることを意味し、
as アウトファイル 標準出力に書き込むことを意味します。 また、いずれかのファイルを省略した場合は、
まるで同じ - そのファイルに指定されていました。
特に明記されていない限り、またはオプションはで終了します =、引数を取るすべてのオプションは
その引数をオプションの直後、または間にスペースを入れて表示します
オプションと引数: -イフー と -I foo 同じ効果があります。
多くのオプションには複数文字の名前があります。 したがって、複数のXNUMX文字のオプションが be
グループ化: -dM とは非常に異なる -d -M.
-D 名
事前定義 名 定義1のマクロとして。
-D 名=定義
の内容 定義 トークン化され、
翻訳フェーズXNUMX #定義する 指令。 特に、定義は次のようになります
埋め込まれた改行文字によって切り捨てられます。
シェルまたはシェルのようなプログラムからプリプロセッサを呼び出す場合は、必要になることがあります
シェルの引用構文を使用して、スペースなどの文字を保護します。
シェル構文での意味。
コマンドラインで関数のようなマクロを定義する場合は、その引数を記述します
等号(存在する場合)の前に括弧を付けてリストします。 括弧は
ほとんどのシェルにとって意味があるので、オプションを引用する必要があります。 と sh と CSH,
-NS'名(引数..。)=定義' 作品。
-D と -U オプションは、コマンドラインで指定された順序で処理されます。 全て
-イマクロス file と -含める file オプションは結局処理されます -D と -U オプション。
-U 名
以前の定義をキャンセルします 名、組み込みまたは付属のいずれか -D オプションを選択します。
-未定義
システム固有またはGCC固有のマクロを事前定義しないでください。 事前定義された標準
マクロは定義されたままです。
-I DIR
ディレクトリを追加します DIR ヘッダーファイルを検索するディレクトリのリストに移動します。
によって名付けられたディレクトリ -I 標準システムにディレクトリが含まれる前に検索されます。
ディレクトリの場合 DIR 標準のシステムインクルードディレクトリである場合、このオプションは無視されます。
システムディレクトリのデフォルトの検索順序と特別な処理を確認してください
システムヘッダーの数は無効になりません。 もしも DIR 「=」で始まり、「=」は
sysrootプレフィックスに置き換えられました。 見る --sysroot と -isysroot.
-o file
出力をに書き込む file。 これは指定するのと同じです file XNUMX番目の非オプションとして
への議論 cpp. gccの XNUMX番目の非オプション引数の解釈が異なります。
だからあなたは使用する必要があります -o 出力ファイルを指定します。
-壁
通常のコードに必要なすべてのオプションの警告をオンにします。 現在これ
is -コメント, -筆文字, -Wmultichar 整数の昇格に関する警告が原因で
「#if」式の符号の変更。 プリプロセッサの警告の多くに注意してください
デフォルトでオンになっており、それらを制御するオプションはありません。
-コメント
-コメント
コメント開始シーケンスが発生するたびに警告する /* に表示されます /* コメント、またはいつでも
バックスラッシュ-改行はに表示されます // コメント。 (どちらの形式も同じ効果があります。)
-筆文字
コメント内のほとんどのトリグラフは、プログラムの意味に影響を与えることはできません。 ただし、
エスケープされた改行を形成するトリグラフ(?? / 行の終わりに)できます、によって
コメントの開始位置または終了位置を変更します。 したがって、形成される三重音字のみ
エスケープされた改行は、コメント内に警告を生成します。
このオプションは、 -壁。 場合 -壁 が指定されていない場合、このオプションは引き続き有効です
トリーグラフが有効になっていない限り。 警告なしでトリグラフ変換を取得するには、
他の -壁 警告、使用 -三重音字 -壁 -Wno-トライグラフ.
-伝統的な
従来のCとISOCでは動作が異なる特定の構造について警告します。
従来のCに相当するものがなく、問題のあるISOC構造について警告する
避けるべき構成。
- ウンデフ
マクロではない識別子が #もし ディレクティブは、
の外 定義済みの。 このような識別子はゼロに置き換えられます。
-Wunused-マクロ
メインファイルで定義されている未使用のマクロについて警告します。 マクロは 中古 もしそれが
少なくともXNUMX回は拡張または存在のテストを行いました。 プリプロセッサは、次の場合にも警告します。
マクロは、再定義または未定義の時点では使用されていません。
組み込みマクロ、コマンドラインで定義されたマクロ、およびincludeで定義されたマクロ
ファイルについては警告されません。
ご注意: マクロが実際に使用されているが、スキップされた条件ブロックでのみ使用されている場合、
CPPはそれを未使用として報告します。 このような場合の警告を回避するには、改善する可能性があります
たとえば、最初にスキップされたマクロに移動することによる、マクロの定義の範囲
ブロック。 または、次のようなダミーの使用法を提供することもできます。
#if定義されたthe_macro_causing_the_warning
#endif
-ウェンディフ-ラベル
いつでも警告する #その他 または #endif テキストが続きます。 これは通常、
フォームのコード
#if FOO
...
#else FOO
...
#endif FOO
XNUMX番目とXNUMX番目の「FOO」はコメントに含める必要がありますが、多くの場合、古いプログラムには含まれていません。
この警告はデフォルトでオンになっています。
-エラー
すべての警告をハードエラーにします。 警告をトリガーするソースコードは次のようになります
拒否されました。
-Wsystem-ヘッダー
システムヘッダーのコードに対して警告を発行します。 これらは通常、見つけるのに役立ちません
したがって、独自のコードのバグは抑制されます。 あなたがシステムに責任がある場合
ライブラリ、あなたはそれらを見たいかもしれません。
-w GNU CPPがデフォルトで発行する警告を含め、すべての警告を抑制します。
-衒学者
C標準にリストされているすべての必須診断を発行します。 それらのいくつかは残っています
無害なコードで頻繁にトリガーされるため、デフォルトでアウトになります。
-衒学的エラー
すべての必須診断を発行し、すべての必須診断をエラーにします。
これには、GCCが発行せずに発行する必須の診断が含まれます -衒学者 しかし、として扱います
警告。
-M 前処理の結果を出力する代わりに、次のようなルールを出力します。 make
メインソースファイルの依存関係を説明します。 プリプロセッサはXNUMXつを出力します
make そのソースファイルのオブジェクトファイル名、コロン、および名前を含むルール
からのものを含む、含まれているすべてのファイルの -含める or -イマクロス コマンド-
ラインオプション。
明示的に指定されていない限り( -MT or -MQ)、オブジェクトファイル名はで構成されます
接尾辞がオブジェクトファイルの接尾辞および任意の接尾辞に置き換えられたソースファイルの名前
主要なディレクトリ部分が削除されました。 含まれているファイルが多い場合、ルールは次のとおりです。
を使用していくつかの行に分割 \-改行。 ルールにはコマンドがありません。
このオプションは、次のようなプリプロセッサのデバッグ出力を抑制しません。 -dM。 避けるために
このようなデバッグ出力を依存関係ルールと混合するには、明示的に指定する必要があります
依存関係の出力ファイル -MF、または次のような環境変数を使用します
DEPENDENCIES_OUTPUT。 デバッグ出力は、引き続き通常の出力ストリームに送信されます。
ノーマル。
通過 -M ドライバーに暗示する -E、および暗黙的な警告を抑制します -w.
-んん いいね -M ただし、システムヘッダーディレクトリにあるヘッダーファイルについては言及しないでください。
また、そのようなヘッダーから直接的または間接的にインクルードされるヘッダーファイルもありません。
これは、山括弧または二重引用符の選択が #include
ディレクティブ自体は、そのヘッダーがに表示されるかどうかを決定しません -んん
依存関係の出力。 これは、GCCバージョン3.0および
早く
-MF file
と一緒に使用する場合 -M or -んん、依存関係を書き込むファイルを指定します。 いいえの場合 -MF
スイッチには、プリプロセッサが送信したのと同じ場所にルールを送信するように指定されています
前処理された出力。
ドライバーオプションと併用した場合 -MD or -MMD, -MF デフォルトの依存関係を上書きします
出力ファイル。
-MG 次のようなオプションと組み合わせて -M 依存関係の生成を要求し、 -MG と仮定する
欠落しているヘッダーファイルは生成されたファイルであり、それらを依存関係リストに追加します。
エラーが発生します。 依存関係のファイル名は「#include」から直接取得されます
パスを付加せずにディレクティブ。 -MG また、前処理された出力を抑制します。
ヘッダーファイルがないと、これは役に立たなくなります。
この機能は、makefileの自動更新で使用されます。
-MP このオプションは、CPPに、依存関係以外の依存関係ごとに偽のターゲットを追加するように指示します。
メインファイル。それぞれが何にも依存しないようにします。 これらのダミールールはエラーを回避します
make を更新せずにヘッダーファイルを削除すると、 メークファイル 合わせる。
これは典型的な出力です:
test.o:test.c test.h
test.h:
-MT ターゲット
依存関係の生成によって発行されるルールのターゲットを変更します。 デフォルトでは、CPPは
メイン入力ファイルの名前、ディレクトリコンポーネントとファイルサフィックスを削除します
など .c、およびプラットフォームの通常のオブジェクトサフィックスを追加します。 結果が目標です。
An -MT オプションは、ターゲットを指定した文字列とまったく同じになるように設定します。 お望みならば
複数のターゲットの場合、それらを単一の引数として指定できます。 -MT、または複数を使用する
-MT オプション。
たとえば、 -MT '$(objpfx)foo.o' 与えるかもしれない
$(objpfx)foo.o:foo.c
-MQ ターゲット
と同じ -MT、ただし、Makeに特別な文字を引用します。
-MQ '$(objpfx)foo.o' 与える
$$(objpfx)foo.o:foo.c
デフォルトのターゲットは、で与えられたかのように自動的に引用されます -MQ.
-MD -MD に相当します -M -MF file、 それ以外で -E 暗示されていません。 ドライバ
決定する file かどうかに基づいて -o オプションが与えられます。 そうである場合、ドライバーは
引数ですが、接尾辞は .d、それ以外の場合は、入力ファイルの名前を取ります。
ディレクトリコンポーネントとサフィックスを削除し、 .d サフィックス。
If -MD とともに使用されます -E、 どれか -o スイッチは、
依存関係の出力ファイルですが、使用しない場合 -E、それぞれ -o 指定することは理解されます
ターゲットオブジェクトファイル。
Since -E 暗示されていません、 -MD 依存関係出力ファイルを次のように生成するために使用できます
コンパイルプロセスの副作用。
-MMD
いいね -MD ただし、システムヘッダーファイルではなく、ユーザーヘッダーファイルのみに言及します。
-x c
-x C ++
-x Objective-c
-x アセンブラ-with-cpp
ソース言語(C、C ++、Objective-C、またはアセンブリ)を指定します。 これは何の関係もありません
標準への適合または拡張。 それは単にどの基本構文を選択するかを選択するだけです
予想。 これらのオプションのいずれも指定しない場合、cppはから言語を推測します
ソースファイルの拡張子: .c, .ccに, .mまたは .S。 のその他の一般的な拡張機能
C ++とアセンブリも認識されます。 cppが拡張子を認識しない場合は、
ファイルをCとして扱います。 これは最も一般的なモードです。
ご注意: 以前のバージョンのcppは -言語 両方を選択したオプション
言語と規格の適合レベル。 このオプションは削除されました。
それはと競合します -l オプションを選択します。
-std =標準
-アンシ
コードが準拠する標準を指定します。 現在、CPPはCについて知っています
およびC ++標準。 その他は将来追加される可能性があります。
標準 次のいずれかである可能性があります。
「c90」
「c89」
「iso9899:1990」
1990年からのISOC標準。 c90 このバージョンの通常の省略形です
標準。
この -アンシ オプションはと同等です -std = c90.
「iso9899:199409」
1990年に修正された1994C規格。
「iso9899:1999」
「c99」
「iso9899:199x」
「c9x」
1999年XNUMX月に公開された改訂ISOC標準。公開前は、
C9Xとして知られていました。
「iso9899:2011」
「c11」
「c1x」
2011年XNUMX月に公開された改訂ISOC標準。公開前は、
C1Xとして知られていました。
「gnu90」
「gnu89」
1990C標準とGNU拡張。 これがデフォルトです。
「gnu99」
「gnu9x」
1999C標準とGNU拡張。
「gnu11」
「gnu1x」
2011C標準とGNU拡張。
「c ++ 98」
1998年のISOC ++標準と修正。
「gnu ++ 98」
と同じ -std = c ++ 98 プラスGNU拡張。 これはC ++コードのデフォルトです。
-I- インクルードパスを分割します。 で指定されたディレクトリ -I 前のオプション -I-
「#include」でリクエストされたヘッダーのみを検索ファイル""; それらは検索されません
"#含むファイル> "。 追加のディレクトリがで指定されている場合 -I 後のオプション
-I-、それらのディレクトリはすべて検索されます #include ディレクティブ
加えて、 -I- 現在のファイルディレクトリのディレクトリの使用を禁止します。
「#include」の最初の検索ディレクトリファイル"".
このオプションは非推奨になりました。
-ノストディンク
標準のシステムディレクトリでヘッダーファイルを検索しないでください。 ディレクトリのみ
あなたが指定した -I オプション(および現在のファイルのディレクトリ(場合は)
適切な)が検索されます。
-nostdinc ++
C ++固有の標準ディレクトリでヘッダーファイルを検索しないでください。ただし、それでも検索してください。
他の標準ディレクトリを検索します。 (このオプションは、C ++をビルドするときに使用されます
図書館。)
-含める file
プロセス file 「#include "file"」が一次資料の最初の行として表示されたかのように
ファイル。 ただし、最初に検索されたディレクトリ file プリプロセッサの動作です
ディレクトリにジョブを開始します。 を取得する必要がある者 of メインソースファイルを含むディレクトリ。 見つからない場合
そこでは、「#include "..."」検索チェーンの残りの部分で次のように検索されます。
ノーマル。
複数の場合 -含める オプションが与えられ、ファイルはそれらの順序で含まれます
コマンドラインに表示されます。
-イマクロス file
まさにそのように -含める、スキャンによって生成された出力を除く file スローされます
あちらへ。 それが定義するマクロは定義されたままです。 これにより、すべてのマクロを取得できます
宣言も処理せずにヘッダーから。
によって指定されたすべてのファイル -イマクロス によって指定されたすべてのファイルの前に処理されます -含める.
-idirafter DIR
検索 DIR ヘッダーファイルの場合ですが、実行してください After で指定されたすべてのディレクトリ -I と
標準のシステムディレクトリが使い果たされました。 DIR システムインクルードとして扱われます
ディレクトリ。 もしも DIR 「=」で始まり、「=」はsysrootに置き換えられます
プレフィックス; 見る --sysroot と -isysroot.
-iprefix 接頭辞
指定 接頭辞 後続のプレフィックスとして -iwithprefix オプション。 プレフィックスの場合
ディレクトリを表します。最後のファイルを含める必要があります /.
-iwithprefix DIR
-iwithprefixbefore DIR
追加 DIR 以前に指定されたプレフィックスに -iprefix、結果を追加します
インクルード検索パスへのディレクトリ。 -iwithprefixbefore 同じ場所に置きます -I
NS; -iwithprefix どこに置くか -idirafter 。
-isysroot DIR
このオプションは、 --sysroot オプションですが、ヘッダーファイルにのみ適用されます(ただし
ダーウィンターゲット。ヘッダーファイルとライブラリの両方に適用されます)。 を参照してください
--sysroot 詳細については、オプションを参照してください。
-imultilib DIR
DIR ターゲット固有のC ++ヘッダーを含むディレクトリのサブディレクトリとして。
-isystem DIR
検索 DIR ヘッダーファイルの場合、によって指定されたすべてのディレクトリの後 -I しかし、前に
標準のシステムディレクトリ。 同じになるように、システムディレクトリとしてマークします
標準のシステムディレクトリに適用される特別な処理。
If DIR 「=」で始まり、「=」はsysrootプレフィックスに置き換えられます。 見る
--sysroot と -isysroot.
-iquote DIR
検索 DIR 「#include」でリクエストされたヘッダーファイルのみファイル""; ではない
「#include」を検索ファイル> "、によって指定されたすべてのディレクトリの前 -I と前に
標準のシステムディレクトリ。
If DIR 「=」で始まり、「=」はsysrootプレフィックスに置き換えられます。 見る
--sysroot と -isysroot.
-fdirectives-のみ
前処理するときは、ディレクティブを処理しますが、マクロは展開しません。
オプションの動作は、 -E と -f前処理済み オプション。
連絡先 -E、前処理は「#define」などのディレクティブの処理に制限されています。
「#ifdef」、「#error」。 マクロ展開や
トリグラフ変換は実行されません。 加えて -dD オプションは暗黙的に
有効になりました。
連絡先 -f前処理済み、コマンドラインとほとんどの組み込みマクロの事前定義は
無効。 コンテキストに依存する「__LINE__」などのマクロが処理されます
通常は。 これにより、以前に「-E」で前処理されたファイルのコンパイルが可能になります。
-fdirectives-only」。
両方と -E と -f前処理済み、のルール -f前処理済み 優先します。 この
以前に「-E」で前処理されたファイルの完全な前処理を有効にします
-fdirectives-only」。
-fdollars-in-identifiers
同意 $ 識別子で。
-拡張識別子
識別子にユニバーサル文字名を受け入れます。 このオプションはデフォルトで有効になっています
C99(およびそれ以降のC標準バージョン)およびC ++の場合。
-fno-canonical-system-headers
前処理するときは、正規化してシステムヘッダーパスを短くしないでください。
-f前処理済み
入力ファイルがすでに前処理されていることをプリプロセッサーに示します。 この
マクロ展開、トリグラフ変換、エスケープされた改行スプライシングなどを抑制します。
ほとんどのディレクティブの処理。 プリプロセッサは引き続き認識して削除します
コメント、前処理されたファイルを渡すことができるように -C なしでコンパイラに
問題。 このモードでは、統合されたプリプロセッサはトークナイザーにすぎません。
フロントエンド用。
-f前処理済み 入力ファイルに拡張子のXNUMXつがある場合、暗黙的です .i, .ii or .mi.
これらは、GCCがによって作成された前処理済みファイルに使用する拡張機能です。 -一時保存.
-ftabstop =幅
タブストップ間の距離を設定します。 これは、プリプロセッサが正しい列を報告するのに役立ちます
タブが行に表示されている場合でも、警告またはエラーの番号。 値が小さい場合
1より大きいか100より大きい場合、このオプションは無視されます。 デフォルトは8です。
-fdebug-cpp
このオプションは、GCCのデバッグにのみ役立ちます。 と一緒に使用する場合 -E、デバッグをダンプします
ロケーションマップに関する情報。 出力内のすべてのトークンの前に、
その場所が属するマップ。 トークンの場所を保持しているマップのダンプ
だろう:
{"P":F ; "F":F ; "L": ;"NS": ;"NS": ;"NS": ; "E": 、 "loc": }
なしで使用した場合 -E、このオプションは効果がありません。
-ftrack-マクロ展開[=レベル]
マクロ展開全体でトークンの場所を追跡します。 これにより、コンパイラは
でコンパイルエラーが発生したときの現在のマクロ拡張スタックに関する診断
マクロ展開。 このオプションを使用すると、プリプロセッサとコンパイラが消費します
より多くのメモリ。 NS レベル パラメータを使用して、トークンの精度のレベルを選択できます
したがって、位置追跡により、必要に応じてメモリ消費量が削減されます。 価値 0 of
レベル いいえのようにこのオプションを無効にします -ftrack-マクロ展開 に存在していた
コマンドライン。 価値 1 のために劣化モードでトークンの場所を追跡します
最小限のメモリオーバーヘッド。 このモードでは、拡張の結果として生じるすべてのトークン
関数のようなマクロの引数は同じ場所にあります。 価値 2 トークンを追跡する
完全に場所。 この値は、最もメモリを消費します。 このオプションが与えられたとき
引数なし、デフォルトのパラメータ値は 2.
「-ftrack-macro-expansion = 2」はデフォルトでアクティブになっていることに注意してください。
-fexec-charset =文字セット
文字列および文字定数に使用される実行文字セットを設定します。 デフォルト
UTF-8です。 文字セット システムの「iconv」ライブラリでサポートされている任意のエンコーディングにすることができます
ルーチン。
-fwide-exec-charset =文字セット
ワイド文字列および文字定数に使用されるワイド実行文字セットを設定します。
デフォルトは、「wchar_t」の幅に対応するUTF-32またはUTF-16です。 NS
-fexec-文字セット, 文字セット システムの「iconv」でサポートされている任意のエンコーディングにすることができます
ライブラリルーチン; ただし、適合しないエンコーディングでは問題が発生します
正確には「wchar_t」にあります。
-finput-charset =文字セット
入力の文字セットからの変換に使用される入力文字セットを設定します
GCCで使用されるソース文字セットへのファイル。 ロケールで指定されていない場合、またはGCC
ロケールからこの情報を取得することはできません。デフォルトはUTF-8です。 これは可能性があります
ロケールまたはこのコマンドラインオプションのいずれかによって上書きされます。 現在、コマンド-
競合がある場合は、lineオプションが優先されます。 文字セット 任意のエンコーディングにすることができます
システムの「iconv」ライブラリルーチンでサポートされています。
-fworkingディレクトリ
プリプロセッサ出力でラインマーカーの生成を有効にして、コンパイラを許可します
前処理時に現在の作業ディレクトリを知っている。 このオプションが
有効にすると、プリプロセッサは最初のラインマーカーの後にXNUMX番目のラインマーカーを出力します
現在の作業ディレクトリの後にXNUMXつのスラッシュが続きます。 GCCはこれを使用します
前処理された入力に存在する場合、ディレクトリは次のように発行されます。
一部のデバッグ情報形式の現在の作業ディレクトリ。 このオプションは
デバッグ情報が有効になっている場合は暗黙的に有効になりますが、これは次の方法で禁止できます。
否定された形式 -fno-作業ディレクトリ。 もし -P コマンドにフラグがあります
lineの場合、「#line」ディレクティブはまったく発行されないため、このオプションは効果がありません。
-fno-show-column
診断で列番号を印刷しないでください。 これは、診断が
次のような列番号を理解しないプログラムによってスキャンされている
デジャグヌ.
-A 述語=回答
述語でアサーションを作成します 述語 そして答える 回答。 このフォームは
古い形式よりも優先 -A 述語(回答)、それはまだサポートされているので、
シェルの特殊文字は使用しません。
-A -述語=回答
述部を使用してアサーションをキャンセルします 述語 そして答える 回答.
-dCHARS
文字 次のXNUMXつ以上の文字のシーケンスであり、次の文字であってはなりません。
スペースが前に付きます。 他の文字は、コンパイラーによって適切に解釈されます。
GCCの将来のバージョン用に予約されているため、黙って無視されます。 指定した場合
動作が競合する文字の場合、結果は未定義です。
M 通常の出力の代わりに、次のリストを生成します #定義する すべてのディレクティブ
プリプロセッサの実行中に定義されたマクロ(事前定義されたものを含む)
マクロ。 これにより、のバージョンで事前定義されているものを見つける方法が得られます。
プリプロセッサ。 ファイルがないと仮定します ふー。、 コマンド
foo.hに触れます。 cpp -dM foo.h
事前定義されたすべてのマクロが表示されます。
あなたが使用している場合 -dM なしで -E オプション、 -dM の同義語として解釈されます
-fdump-rtl-mach.
D いいね M XNUMXつの点を除いて:それはします 事前定義されたマクロを含め、
outputs 両言語で #定義する ディレクティブと前処理の結果。 両方の種類
出力のは標準出力ファイルに送られます。
N いいね D、ただし、マクロ名のみを出力し、展開は出力しません。
I 出力 #include 前処理の結果に加えてディレクティブ。
U いいね D ただし、展開されたマクロ、または定義がテストされたマクロのみ
プリプロセッサディレクティブでは、出力されます。 出力は使用するまで遅延しますまたは
マクロのテスト; と #undef テストされたマクロのディレクティブも出力されますが
当時は未定義。
-P プリプロセッサからの出力でのラインマーカーの生成を禁止します。 これは
Cコードではないものでプリプロセッサを実行するときに役立ち、送信されます
ラインマーカーによって混乱する可能性のあるプログラムに。
-C コメントを破棄しないでください。 すべてのコメントは、出力ファイルに渡されます。
ディレクティブとともに削除される、処理されたディレクティブ内のコメントの場合。
使用するときは副作用に備える必要があります -C; それはプリプロセッサに
コメントはそれ自体がトークンとして扱います。 たとえば、に表示されるコメント
ディレクティブラインとなるものの開始は、そのラインをに変える効果があります
通常のソース行。行の最初のトークンはもはや #.
-CC マクロ展開中も含め、コメントを破棄しないでください。 これは -C除きます
マクロに含まれるコメントは、出力ファイルにも渡されます。
マクロが展開されます。
の副作用に加えて -C オプション、 -CC オプションはすべてのC ++スタイルを引き起こします
Cスタイルのコメントに変換されるマクロ内のコメント。 これは後で防ぐためです
ソース行の残りの部分を誤ってコメントアウトすることによるそのマクロの使用。
この -CC オプションは通常、lintコメントをサポートするために使用されます。
-従来の-cpp
ISO Cではなく、昔ながらのCプリプロセッサの動作を模倣してみてください
プリプロセッサ。
-三重音字
トリーグラフシーケンスを処理します。
-リマップ
非常に短いファイルのみを許可するファイルシステムを回避するための特別なコードを有効にする
MS-DOSなどの名前。
- 助けて
--ターゲットヘルプ
何も前処理する代わりに、すべてのコマンドラインオプションを説明するテキストを印刷します。
-v 冗長モード。 実行開始時にGNUCPPのバージョン番号を出力し、
インクルードパスの最終形式を報告します。
-H 他の通常のアクティビティに加えて、使用される各ヘッダーファイルの名前を出力します。 各
名前はインデントされて、 #include スタックです。 プリコンパイル済みヘッダー
無効であることが判明した場合でも、ファイルも印刷されます。 無効なプリコンパイル済み
ヘッダーファイルは ...NS と有効なもの !... .
-バージョン
- バージョン
GNUCPPのバージョン番号を印刷します。 ダッシュXNUMXつで、通常どおり前処理に進みます。
XNUMXつのダッシュで、すぐに終了します。
ENVIRONMENT
このセクションでは、CPPの動作に影響を与える環境変数について説明します。 あなたはできる
それらを使用して、インクルードファイルを検索するときに使用するディレクトリまたはプレフィックスを指定します。
依存関係の出力を制御します。
次のようなオプションを使用して、検索する場所を指定することもできます。 -I、および制御
次のようなオプションを使用した依存関係の出力 -M。 これらは環境変数よりも優先されます。
これは、GCCの構成よりも優先されます。
CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
各変数の値は、特殊文字で区切られたディレクトリのリストです。
ような パス、ヘッダーファイルを検索します。 特殊文字、
「PATH_SEPARATOR」はターゲットに依存し、GCCビルド時に決定されます。 Microsoftの場合
Windowsベースのターゲットはセミコロンであり、他のほとんどすべてのターゲットではセミコロンです。
結腸。
CPATH で指定されているかのように検索するディレクトリのリストを指定します -I、 だけど
で与えられたパスの後 -I コマンドラインのオプション。 この環境変数
前処理されている言語に関係なく使用されます。
残りの環境変数は、特定の前処理時にのみ適用されます
示された言語。 それぞれが、検索するディレクトリのリストをあたかも指定します。
で指定 -isystem、ただし、で指定されたパスの後 -isystem のオプション
コマンドライン。
これらすべての変数で、空の要素がコンパイラに現在の要素を検索するように指示します
作業ディレクトリ。 空の要素は、パスの最初または最後に表示できます。 にとって
インスタンス、の値が CPATH は「:/ special / include」で、これはと同じ効果があります
-私。 -I / special / include.
DEPENDENCIES_OUTPUT
この変数が設定されている場合、その値は、Makebasedの依存関係を出力する方法を指定します
コンパイラによって処理される非システムヘッダーファイル。 システムヘッダーファイルは
依存関係の出力では無視されます。
の値 DEPENDENCIES_OUTPUT 単なるファイル名にすることができます。その場合、Makeルール
ソースファイル名からターゲット名を推測して、そのファイルに書き込まれます。 または
値は次の形式にすることができます file ターゲット、この場合、ルールはファイルに書き込まれます file
ターゲット ターゲット名として。
つまり、この環境変数はオプションを組み合わせるのと同じです -んん
と -MF、オプション付き -MT スイッチも。
SUNPRO_DEPENDENCIES
この変数はと同じです DEPENDENCIES_OUTPUT (上記を参照)、そのシステムを除く
ヘッダーファイルは無視されないので、 -M ではなく -んん。 しかし、
メイン入力ファイルへの依存は省略されます。
onworks.netサービスを使用してオンラインでcpp-5を使用する