2011-12-15 11 views
4

可能性の重複:
C/C++ source file after preprocessingマクロでいっぱいの大きなC/C++コードを理解するには?

他の日は、私は、問題はこのことであるVC++ 8.下に大きなC/C++プロジェクト開発のバグを修正するタスクを割り当てられていましたコードは実際にネストされたマクロでいっぱいです。 を理解する最良の方法は何ですかこのコードは?どんな提案も感謝しています。

+5

http://stackoverflow.com/questions/277258/c-c-source-file-after-preprocessing –

+0

*プログラマ*に属していませんか? – bitmask

+1

これはリンクされた質問の正確な欺瞞ではありません。 – Pubby

答えて

3

コンパイラ・ライン・オプション/Eを使用すると、すべてのプリプロセッサ出力が標準出力に出力されます。このファイルには、インクルードされたすべてのインライン展開されたマクロがすべて含まれます。プロジェクトの構築方法に応じて、このフラグを追加する最良の方法を理解する必要があります。出力によって、マクロが何を拡大しているのかをよりよく知ることができますが、マクロを展開した出力をトレースするのは難しいことがあります。しかし、あなたはそれを理解することができるはずです。 Reference for the command line options for VS8.0 compiler

としては、コメントで指摘し、これは、重複であり、ここで、より良い答えです:https://stackoverflow.com/a/277362/192896

+3

プリプロセッサが意図的にコードを難読化するのでなければ、ポストプリプロセッサコードは元のコードよりも理解しにくいことがわかります。それは、マクロがどれほど整理され、分かりやすいかによって決まります。 –

+0

@ChrisDodd:合意。あなたはまったく正しい。前述の手法を使用すると、コードが複雑になります。 – hsalimi

+0

私の意見では、多くのマクロを使用すると、文が複雑になるとコードが複雑になります。残念なことに、マクロを過度に使用し、それらをデバッグする唯一の方法は、プリプロセッサの出力を使用することです。 – James

3

私はあなたが最初のマクロが何をすべきかを理解し、その後、コードは後に何を理解しようとする必要があると思いますマクロが展開されます。うまくいけば、各マクロまたはマクロの小さなセットが、定義やコメントから把握できるという意味合いがあることを望みます。

プリプロセッサを使用してコードを実行することはできますが、一般的に分かりにくい分かりにくい質量が(コメントなしで)分かりやすくなります。

+0

Visual Studioにはコメントや行番号を前処理されたコードに保存するオプションがあります –

+0

@Duck:これらのオプションを使用しても、マクロは1つの行にまとめられ、いくつかのコメントは削除されます。 –

関連する問題