0

入力ファイルを処理する C++ プログラムがあります。プログラムに前処理機能を追加したい。つまり、入力ファイルは次のようになります。

%pre-processing section
#include <some_parent_file>
#define x y
#ifdef 0
some useless text
#endif

%actual file-contents
... lots of text ...

次に、私のプログラムは親ファイルからのテキストを自動的にインクルードし、#define などの前処理を行う必要があります。プログラムを呼び出す前に (g++ -E を使用して) スクリプトを使用することもできますが、プログラム内でより柔軟に実行できるようにしたいと考えています。

また、「g++ -E」は、「実際のファイルの内容」セクションの行がハッシュで始まる場合、プリプロセッサ ディレクティブを想定します (g++ -E は、コードを 2 つのセクションに分割したいことを知りません!)。

さらに、 「実際のファイルの内容」セクション内で ifdef 機能だけを使用できれば、それは素晴らしいことです。

プログラム内に C++ コードを埋め込んで、gcc コンパイラの前処理機能から必要な機能のみを使用できますか?

4

3 に答える 3

2

Wavecpplibのようなライブラリはどうですか?

于 2011-12-01T07:22:35.950 に答える
1

単純な可能性はpopen、コマンドパイプから読み取るために使用することです。コマンドパイプはcpp(またはgcc -C -E)またはm4です。

関連する可能性は、スクリプトインタープリターをプログラムに埋め込むことです(例: lua ) 。関連する解決策は、アプリケーションをPythonOcamlなどのインタープリターに埋め込むことです。

最後に、おそらくANTLRを使用して、通常の字句解析および構文解析の手法を使用し、includeディレクティブを自分で処理することができます。libconfigなどの構成ファイルにライブラリを使用することもできます

于 2011-12-01T06:58:45.740 に答える
-1

コンパイル時に機能をオン/オフしたい場合は、標準のプリプロセッサ マクロに固執するか、テンプレートを使用することをお勧めします。また、Qt が標準の C++ コードを解析して追加のコードを生成する方法を確認することもできます。実行時には、スクリプトまたはプラグイン システムを使用してこれを実現できます。

于 2011-12-01T07:25:01.340 に答える