2012-01-10 7 views
0

可能性の重複:私は自分自身は、AndroidのためのSTLのポートをデバッグ発見した
Preprocessor outputプリプロセッサディレクティブを処理し、実際のプリプロセッサ出力を出力するツールはありますか?

。これは、プリプロセッサによって実際に出力されるコードを決定するために、多くの(10-100?)プリプロセッサディレクティブを使用します。 #if#ifdefブロックがたくさんあります。

これを実行して実際にどのテキストがコンパイラに送信されるかを示すツールはありますか?プリプロセッサの出力を見ることは可能ですか?

答えて

2

GCCでは、gcc -E source.cを使用してプリプロセッサの出力のみを表示します。

私は信じています。

他のコンパイラについては、マニュアルを参照してください。これは明確に文書化されるべきである。

+0

うわー、私はこれを逃したとは思わない!ありがとう。簡単な質問:出力を読むとき、 '#'で始まらない行だけがコンパイラに送られるのは本当ですか? –

+0

@ AdamS:そうではありません。残りのディレクティブは、エラーメッセージに正しいファイル名と行番号を出力するために、コンパイラによって引き続き必要とされます。 –

1

これはまさにBoostです。のためにWaveが作成されました。

ウェーブC++プリプロセッサライブラリは、標準テンプレートライブラリ(STL)のよく知られたイディオムと統合インターフェースを使用するように簡単なの後ろに詰め込ま義務付けC99/C++プリプロセッサ機能の標準準拠の実装です。

0

ほとんどすべてのC++コンパイラには、このタスクを実行するコマンドラインスイッチがあります。 g ++の場合はの出力をmanpageに、/EPの出力はに、/Pの出力はファイルに出力します。

+0

VC++には、 '/ E'と'/EP'もあります。 – ildjarn

関連する問題