2011-02-04 8 views
48

私は図書館は私がコンパイルしてるCコードを見てみたいと思いますやっている勉強できるようにするためC.以外の多くの言語をサポートするための前処理指令の多くを持っていると思われるオープンソースのライブラリを使用しています前処理した後、私が書いたもののようになります。gccは前処理後にCコードを出力できますか?

は、GCC(またはLinuxで一般的に利用可能な他のツール)このライブラリを読みますが、前処理が何に変換し、人間によっても読める有する出力Cコードはできますか?

+0

前処理されたコード文句を言わない、もはや任意のプリプロセッサディレクティブを持っているが、私はそれがはるかに読みにくく前処理される前に、よりになりますかなり確信している... –

+0

@AlexW - コードを書いている人がプリプロセッサを悪用したことを恐ろしく信じる*ことによる。 –

答えて

45

cppはプリプロセッサです。

cpp filename.cを実行して、前処理されたコードを出力するか、より良い方法で、 cpp filename.c > filename.preprocessedというファイルにリダイレクトします。

130

はい。それには-Eオプションを渡します。これにより、前処理されたソースコードが出力されます。

+7

もしあなたのコンパイラコマンドが '-o something.o'のようなパラメータをすでに持っているなら、それを' -o something.i'に変更したいかもしれません。さもなければ、前処理された出力は '.o'ファイルにあります。 –

+0

このフラグを 'gcc'に渡します彼は – user3282276

+0

を意味します@TorKlingberg一度に複数のファイルに対してこれを行うことはできますか? – user2808264

4

私は(htmlファイルのため。)プリプロセッサとしてのgccを使用していますそれはあなたがしたいだけで何ありません。 "# - "ディレクティブを展開し、読み込み可能なファイルを出力します。 (私が試した他のC/HTMLプリプロセッサのどれも、行を連結したり、特殊文字をチョークしたりしません。)gccがインストールされているので、コマンドラインは

gcc -E -xc -Pです。 -C - 従来のcppコード_before.cpp> code_after.cpp

(「cpp」である必要はありません)http://www.cs.tut.fi/~jkorpela/html/cpre.htmlにこの使用法の優れた説明があります。

"-traditional-cppが" 空白&タブを保存します。

3

ラン:

gcc -E <file>.c 

または

g++ -E <file>.cpp 
関連する問題