2012-04-16 21 views
1

基本的に私が必要とするのは特定のコードではありません(もちろんそれは素晴らしいでしょう)が、私の目標を達成するためのアイデアと方法だけです。プログラムの実行中にC++コードを生成してコンパイルする方法は?

1)C++コードの小さな例を生成するC++でプログラムを作成する必要があります。これは少しずつ異なります。 (これは私にとって問題はありません。私はテンプレートを使用し、コード内のいくつかの変数をランダム化し、毎回一意にします)

2)生成されたコードを表示します。コードが印刷すると思うもの。

そして、ここでの問題はを開始する場所です:

3)私は、生成されたコードを取得し、プログラムをプリントアウトしているであろうと、テキストの文字列を取得するには何とかそれをコンパイルする必要があります。私は停止し、助けなしにそれを把握できない場合、その後

4)そして、ユーザが入力したものと文字列を比較する。

ので、ステップ3)がある...私は書くことを考えていました.cppファイルの関数で生成されたコードを呼び出してその関数を呼び出すことができましたが、動作させることができなかったので、私は考え始めました。 。

答えて

2
  1. .cppファイル
  2. コンパイラを呼び出す(または作るか、または同等のビルドシステムを)書く
  3. コンパイルが失敗した場合、おそらくエラーを表示しますか?
  4. コンパイルが成功した場合、それはスクリプトに2/3/4をラップし、systemまたはpopenでそれを呼び出すために、おそらく最も簡単です結果のプログラムを実行し、出力

を表示します。スクリプトは、ファイル名が一意であることを確認し、stderrをstdoutなどに折り畳むことができます。

あなたの実行中のプログラムはコンパイルされたコードと実際には対話していません。最も簡単。このスクリプトは、コンパイラの出力/エラーとプログラムの出力を区別するためのマークアップを追加できます。


私は年のためのバッチファイルを書いていないが、あなたは、コマンドライン(ref)からコンパイラを実行する方法を知っていれば、あなたがスクリプトを書くことができます。

  1. コンパイルA .cppファイル
  2. .exe
  3. ファイルに
をその出力をリダイレクト実行

次に、C++では、スクリプトが期待するファイルの.cppにコードを保存し、system("myScript.bat")のようなスクリプトを実行してから、出力ファイルを読み込むだけです。

別個のバッチスクリプトを書きたくない場合は、systemを一度呼び出してコンパイラを起動し、結果として.exeを再度実行することができます。

+0

これは十分に有望ですが、stil、私はどのようにコンパイラを呼び出すか分かりません。私が必要としていることをActualy thats、私はnother .cppファイルをコンパイルする必要があります。メインのものを実行しています...もっと具体的にできますか? – krishkule

+0

コンパイラを呼び出す方法は、プラットフォーム固有のもの(およびコンパイラ固有のもの)です。あなたは今どのプラットフォーム、コンパイラ、ビルドシステムを使っているのか教えていただけますか? – Useless

+0

私は64bitで作業しています.MS Visual Studio 2010 Expressを使用しています。私は本当にあなたにもっと多くのことを伝えることはできません。私は何も変更していないのですが、デフォルトはすべてです。これが十分であることを願って。 – krishkule

0

は、なぜあなたはシステムを使用して生成されたコードをスタンドアロンでコンパイルしていけない...あなたの問題、価値のショットのために非常に適して()を呼び出しますか? システム( "g ++ temp.cpp -o temp.exe); - この種類の何か、そして戻り値 に基づいて、システム(" temp.exe ")のようにtemp.exeを再度実行できます。ファイルへtemp.exeから出力して、現在のプログラムにtemp.exeの出力を得るために、そのファイルを読む...

0

あなたはあなたのようなC++コンパイラを呼び出すことができますなどの外部ツールを呼び出すか、あなたのプラットフォームで提供されているその他のものを使用してください。

また、コンパイラを実装するライブラリを、ウルプログラム。そのためには、clangとllvmを調べたいかもしれません。

関連する問題