私はClangとCh(c ++インタープリター)で読んでいましたが、はっきりしていませんが、インストールせずに新しく生成された.cppファイルを実行することは可能ですか?私はどのPCでも最終的なプログラムを実行する必要があるので...
ps。はいの場合、.cppファイルがc ++コード内で実行されている良い例はありますか?
私はClangとCh(c ++インタープリター)で読んでいましたが、はっきりしていませんが、インストールせずに新しく生成された.cppファイルを実行することは可能ですか?私はどのPCでも最終的なプログラムを実行する必要があるので...
ps。はいの場合、.cppファイルがc ++コード内で実行されている良い例はありますか?
これはおそらく不可能であるか、少なくとも非常に困難です。プログラム内にコンパイラ全体(リンカ、アセンブラ、オプティマイザ、プリプロセッサなどを含む)を含める必要があり、それによってプログラムは非常に大きくなります。
これを行う1つの方法は、Clangを使用することです(すでに述べたように)。ソースには「Clangインタープリター」と呼ばれるデモプロジェクトもあります:http://llvm.org/viewvc/llvm-project/cfe/trunk/examples/ clang-interpreter /
しかし、私はかつてこの「獣」を自分のプログラムにコンパイルしようとしましたが、結果のバイナリ(または外部ライブラリを持つバイナリ)のファイルサイズが数十メガバイト(おそらく100)になるため、途中で諦めました。
私の提案は、簡単に解釈できる別のスクリプト(たとえば、任意のUNIXマシンで実行できるbash / shスクリプト)を作成することです。
私の知る限り、CPPファイルのコンパイルプロセスは次のようになっているので不可能です-
前処理:プリプロセッサはC ++ソースコードファイルを受け取り、#include
s、#define
s、およびその他のプリプロセッサディレクティブを処理します。このステップの出力は、プリプロセッサディレクティブのない「純粋な」C++ファイルです。
コンパイル:コンパイラはプリプロセッサの出力を受け取り、そこからオブジェクトファイルを生成します。
リンク:リンカは、コンパイラによって生成されたオブジェクトファイルを取得し、ライブラリまたは実行可能ファイルのいずれかを生成します。
したがって、中間ファイルと実行可能ファイルが必要です。
詳細はこちら-
種類は、「インストール」の意味によって異なります。
はい、完全なコンパイラを使用してプログラムを配布し、ソースコードをコンパイルして、最終結果を実行できます(すべて元のexeから)。