1

C++ パーサーを探していて、最近、以下のプロジェクトに出くわしました。その中には、私のニーズに非常に適していると思われるパーサーがありますが、作成者がコードのコア部分の一部を意図的に難読化しているため、コードを調べるのが少し難しくなっていると思います。

https://github.com/ArashPartow/math-parser-benchmark-project/blob/master/fparser/fpoptimizer.cc

このファイルと作成者の Web サイトには、難読化解除された単純なバージョンがあるという説明がありますが、示されたサイトにはリンクが切れているだけのようで、作成者に連絡を取ろうとしても成果がありませんでした。

仲間の SOers が、上記のファイルの難読化を元に戻すための迅速かつ簡単な方法を知っているかどうか疑問に思っていました。

私は C++ の専門家ではないので、よくわかりませんが、おそらくファイルの名前が示すように、パフォーマンス上の理由である可能性があるため、コードがそのままである正当な理由がある可能性があります。

4

2 に答える 2

6

この特定のケースでは、最新の devel ファイルを使用して、プロジェクト ページへのこのリンクを試すことができます。バージョンが間違っていることがわかりました。リンクには 4.5 とあり、このリビジョンの現在のバージョンは 4.5.2 です。彼らは古いバージョンを保持していないようですので、そこで最新のものを入手してください

于 2013-04-03T03:23:51.977 に答える
4

ほとんどのコンパイラには、コードでプリプロセッサを実行してプリプロセッサ出力を生成するオプションがあります。これにより、 を使用して行われた難読化が削除され#definesます。

たとえば、MSVC では、実行できますcl /P fpoptimizer.cc。これにより、前処理されたファイルを含む fpoptimizer.i というファイルが作成されます。

#includesこれを行う前にプログラム内のを削除して、プログラム内#defineの のみが前処理され、他のものは処理されないようにすることができます。

gcc は、-E同様のことを行うオプションを提供します。

于 2013-04-03T03:14:49.593 に答える