オブジェクトファイルに変換する前に、[〜#〜] c [〜#〜]プリプロセッサによって生成された出力を表示するにはどうすればよいですか?
MACRO定義が私のコードにどのように影響するかを確認したい。
gcc -E file.c
または
g++ -E file.cpp
あなたのためにこれを行います。 -Eスイッチは、前処理フェーズの後にコンパイラーを強制的に停止し、現時点で得られているすべてのものを標準出力に出力します。
注:確かにいくつかの#includeディレクティブが必要です。インクルードされたファイルも前処理されるため、大量の出力が得られる可能性があります。
Visual C++の場合、スイッチは/ Eであり、プリプロセッサーの出力を画面に出力します。
Cプリプロセッサを直接呼び出すこともできます。
cpp infile outfile
チェックアウト man cpp
詳細については。
GCCの場合、
gcc -E -dM file.c
または
g++ -E -dM file.cpp
仕事をする必要があります。 GNU Preprocessor manual puts it )のように、プリプロセッサの実行中に定義されたすべてのマクロ(定義済みを含む)の '#define'ディレクティブのリストを生成する必要がありますマクロ。
使用するコンパイラによって異なります。
GCCでは、コマンドラインで-E
フラグを指定して、コンパイラーにプリプロセッサー出力を生成させることができます。
ここで説明されている私のスクリプトをチェックすることができます:
http://mosermichael.github.io/cstuff/all/projects/2011/09/16/preprocessor.html
これは、プリプロセッサーの出力を(うまくいけば)読み取り可能なhtml文書にフォーマットします。プリプロセッサーが原因で異なる行は、ファイルでマークされます。