2016-12-18 7 views
-3

後で実行できるコードを内部に持つ変数をC++で作成する方法はありますか?例えば内部にコードを持つ変数を作る?

string code = "cout << "Hello World" << endl;"? 

以降に実行することができ、ファイルやメモ帳ファイルを作りますか?誰かがプログラムに従業員を追加した場合と同様に、ファイルを作り、従業員のすべての情報を追加します。その後、プログラムのユーザーが「その従業員を見たい」というメッセージが表示されると、その従業員の情報がすべて表示されます。

ありがとうございます。

+2

あなたは「どのようにプログラムを書くのですか?」と尋ねています。それはあまりにも広範に保留されるでしょう。 – lakeweb

+1

C++はスクリプト言語ではありません... –

+0

データをコードに変換するプログラムを書く人はいません。従業員情報を保存して読み込みたい場合は、コードとして書き込まないでください。それはデータです。 –

答えて

0

ソリューションは、マクロを作成するの#defineプリプロセッサディレクティブを使用することです: -

#define code cout << "Hello World" << endl; 

あなたが単語 'コード' を使用whereeverさて、それはCOUT < <に置き換えられます "Hello World" の< < endl;

例:

int main() 
{ 
    code 
    return 0; 
} 
+0

ありがとうございました。 – SpecialVirusTasker

0

はい、それは比較的新しい構文です。

std::string msg = "Hello world"; 
auto code = [&std::cout, =msg]() {std::cout << msg;}; 

// Now we can pass code about as a variable. 

code(); // runs it, even if std::cout and msg has gone out of scope 

利点は、比較関数、またはキーアクセス機能、または同様のより大きな構造に結合することができることです。ラムダからプログラム全体を構築することもできますが、それはむしろ理論的なものになります。

ただし、コンパイル時にC++コードを指定する必要があります。 C++をオンザフライでコンパイルすることはできません(まだ)。

+0

'C++をオンザフライでコンパイルすることはできません。'あなたは決してできないことを願っています。それはセキュリティの悪夢だろう。 – tambre

+0

私はいくつかのC++コードを生成し、それをファイルに書き出し、C++コンパイラを呼び出してそのコードを実行可能ファイル(または共有ライブラリ)にコンパイルし、そのコードをロードして実行することによって動作するプログラムを見てきました。これらのプログラムの作者は、自分たちの安全のために、コンピュータから永久に離れていなければなりません:) –

+0

Lispとその関連言語は、即座に関数の作成を可能にします。しかし、効果的に使うのは難しい施設です。 C++では、スクリプトを追加するのは比較的簡単です(C/C++に簡単にスクリプトを追加する方法についてはMinibasicのhttps://sourceforge.net/projects/minibasic/を参照してください)。ユーザーに「ソフトコード」を許可するかどうかは、良いデザインパターンであるかどうかについてのオープンな議論ですが、いくつかのプログラムがその上に構築されています。 –

関連する問題