質問: C言語での質問です。 ### 質問 char型の文字列aがあります。 aにprintf("a")やstrlen("aaa")と、書いてあったら、 それを実行して、戻り値をint型のbに代入したいのですが、 switchやifを使わずにできないのでしょうか。
回答: こんにちは。 C言語は一般にコンパイラです。 コンパイラは入力されたソース・コードを事前にマシン語へ変換しておき、後でそれを起動する仕組みです。もし、どうしても必要であればC言語からCコンパイラを起動して対象のソースをビルドして実行する事になります。 コンパイル動作が入るため、1塊のソースの実行に最低でも数秒かかる悲惨な処理性能になります。 また、対象のソースと現プログラムとの間のデータのやり取りはかなり手間がかかります。更に、セキュリティ的なリスク回避(悪意のあるソース・コードを処理しない仕組み)も難しいです。 C言語には主に学習目的でインタプリタも存在しますが、-maeda-さんがお望みの機能に対応していない可能性も高いです。(標準のC言語に存在しない機能ですから。) その場合は、その機能をご自身で実装する必要があり、それは冒頭に述べたコンパイラを使う方法と大差ないだろうと思います。 コンパイラを起動しない分、実行速度はかなり「まし」になるとは思います。