2011-02-11 8 views
1

私の問題:実行時に "C"文を作成して実行することはできますか?

  • プログラムは、上記入力されたコマンドの任意の組み合わせが可能であるファイル{INFINITE、CMDSTART、2、CMDPLAY、4、CMDPAUSE、CMDSTOP}

  • から入力をとります。

  • プログラムの出力は、上記入力を読み取り、入力によって定義された順序で機能を実行することです。入力の上

  • のようなコードに何か実行につながるはずです。私は「INFINITE」は、その後、おそらく私が取得するstrcmp()とswitch文を持っているだろう持っていませんでした場合

    while(true) 
    { 
        cmdStart(); 
        for(i=0;i<2;++i) 
         cmdPlay(); 
        for(i=0;i<4;++i) 
         cmdPause(); 
        cmdStop(); 
    } 
    

を実行の順序。しかし、無限大を実現するためには、これらの関数ポインタを入力順で配列に格納する必要があります。その後、しばらくして(ループ)、私はこれらの関数ポインタを呼び出す必要があります。他にどのようにこれを行うかについての興味深い考え。

+1

はい、可能ですが、私はあなたの教授があなたに不可能な宿題を割り当てるとは思わないでしょうか?また無限はちょうど(真の)ループかもしれない。 – Grammin

+1

あなたはcやC++について話していますか?彼らは同じ言語ではありません。おそらく両方にタグを付けるべきではありません。 (あなたの質問に何らかの形で2つの言語を使用しない限り) –

+0

"INFINITE"の意義は何ですか? – Yuliy

答えて

1

はい、ただし、それを行うにはコンパイラ(または2つ)が必要です。基本的には、 "ミニ言語"をC言語に翻訳してから、結果をコンパイルするためにCコンパイラを起動し、それを実行する必要があります。あなたは(明らかに)親プログラムの文脈で実行することを期待しているので、実行するために、通常、共有ライブラリまたはDLLとして、あるいはあなたのプラットフォームがその行に沿って提供しているものとしてロードしたいと思うでしょう。

IMO、これはあなたが何をしても達成するためにかなりラウンドアバウトな方法です。スクリプトインタプリタ(例:lua)を実行可能ファイルに埋め込み、その言語でスクリプトを作成する方がはるかに一般的です。

3

ファイルからの情報を、反復回数と呼び出す関数を記述する構造体の配列に解析する必要があります。構造体を解釈してそれに応じて動作するコードがあります。

実行時に実際にCコードを生成することは可能ですが、私は気にしません。 Cコードをソースファイルに書き込んで、動的にロードされたライブラリにコンパイルしてから、ライブラリをロードしてから実行してください。 「スレッジハンマー」や「ナッツ」のフレーズが頭に浮かびます。

関連する問題