4

#ifs と #ifdefs の大規模なもつれによって構成されているいくつかの古いコードのリバース エンジニアリングを行っています。現在、エディターで置換を行って、さまざまな構成を検討しています。これは退屈で、(私が思うに) エラーが発生しやすいです。

#if[def] を前処理するが、他のプリプロセッサ ディレクティブ (#define など) をそのままにしておく gcc プリプロセッサ オプションはありますか? これはリバース エンジニアリングのみを目的としています。前処理されたコードをコンパイルしたり、使用したりする必要はありません。

4

2 に答える 2

5

gccのプリプロセッサにそのような機能があるかどうかはわかりません。そして、あなたがやろうとしていることによっては、それさえ不可能かもしれません。#ifdefディレクティブが以前にディレクティブによって定義された(または定義されていない)マクロを参照し、ディレクティブ#defineを無視した場合#define、それは明らかに機能しません。

しかし、unifdefコマンドはあなたが探しているものである可能性があります。sudo apt-get install unifdef;を使用してUbuntuシステムにインストールしました。他のシステムにインストールする同様の方法があるはずです。

于 2012-06-08T21:52:13.280 に答える
2

コンパイルする必要がない場合は、IDEの機能を使用してifdefを理解できます。Eclipseで、「プロジェクト」>「設定」>「C / C ++ビルド」>「パスとシンボル」に移動し、必要なシンボルを定義します。Eclipseは、シンボルが定義されていないifdefを無視します。

于 2012-06-08T21:50:01.787 に答える