- ベストアンサー
C言語やC++、VC++について
C言語やC++、VC++について C言語やC++、VC++などはIL コードと呼ばれる中間言語が作成されるのでしょうか?それともコンパイラーがネイティブコードに変換されるのでしょうか?でもネイティブコードに変換すると機械語なので互換性がないのではないのでしょうか?それなのになぜ他のwindowsのパソコンで実行できるのはなぜなのでしょうか?そこら辺はどうなっているのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ILコードをネィティブに変換するのが .NET(ドットネット)フレームワークの仕事です。 これは、.NETをインストールすると自動的に入ります。 (というか、これがないと.NETは意味をなさない!) 厳密にはOSと.NET フレームワークは別の存在です。 しかし、最近のWinではOSインストール済みのPCでは 有無を言わさず,.NETが入ってます。 (.NETのないWin7インストール済みPCなんてありえないです) そういう意味で、 アプリ作成者側からは 「OSがネィティブに変換してくれる」 ととらえても 大きな問題とはならないと思います。
その他の回答 (2)
- Wr5
- ベストアンサー率53% (2173/4061)
>このコンパイラーはOSに最初から入っているのでしょうか? (CまたはC++のコンパイラということならば)入っていません。 >それとも自分でダウンロードしなくてはならないのでしょうか?もしダウンロードしなくてはならない場合どこにあるのでしょうか? 無料のものならダウンロードしてインストールできるでしょう。 VC系ならMicrosoft Visual C++ 2008 Express Editionが、 Borlandからも無料のコンパイラが提供されていたはずです。 当然有料のモノもあるわけですが…。 検索すればそれなりに情報はみつかるでしょう。
お礼
質問を間違えました。 >VCはマネージ拡張といってILコードが生成されるものもあります。(マネージ拡張はある意味C++とは別言語) >(CまたはC++のコンパイラということならば)入っていません。 というのはILコードをコンパイルするコンパイラ(VBやVCのマネージ拡張用のコンパイラ)はOSに最初からインストールされているのでしょうか?
- hoge_piyo
- ベストアンサー率57% (15/26)
機械語はCPUの種類によって違いますが、簡単に言うと現在普通のパソコンに入っているwindowsやLinuxが動くCPUはx86系といって、共通の命令セットを持っているので、機械語でもある程度の互換性はあります。 C、C++、VC++はILコードは生成されません。VCはマネージ拡張といってILコードが生成されるものもあります。(マネージ拡張はある意味C++とは別言語) ILコードは主にC#やVB.NET(他にもF#、IronRuby、IronPythonなど)がコンパイルされたときにできるものです。
お礼
回答ありがとうございます。あともうひとつ教えていただきたいのですが、ILコードって専用のコンパイラーがないといけないのはわかるのですが、このコンパイラーはOSに最初から入っているのでしょうか?それとも自分でダウンロードしなくてはならないのでしょうか?もしダウンロードしなくてはならない場合どこにあるのでしょうか?
お礼
回答ありがとうございます。やっぱりそういうことでしたか!ありがとうございました。