• ベストアンサー

C言語やC++、VC++について

C言語やC++、VC++について C言語やC++、VC++などはIL コードと呼ばれる中間言語が作成されるのでしょうか?それともコンパイラーがネイティブコードに変換されるのでしょうか?でもネイティブコードに変換すると機械語なので互換性がないのではないのでしょうか?それなのになぜ他のwindowsのパソコンで実行できるのはなぜなのでしょうか?そこら辺はどうなっているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLK314
  • ベストアンサー率55% (84/152)
回答No.3

ILコードをネィティブに変換するのが .NET(ドットネット)フレームワークの仕事です。 これは、.NETをインストールすると自動的に入ります。 (というか、これがないと.NETは意味をなさない!) 厳密にはOSと.NET フレームワークは別の存在です。 しかし、最近のWinではOSインストール済みのPCでは 有無を言わさず,.NETが入ってます。 (.NETのないWin7インストール済みPCなんてありえないです) そういう意味で、 アプリ作成者側からは 「OSがネィティブに変換してくれる」 ととらえても 大きな問題とはならないと思います。

taiyaki_10
質問者

お礼

回答ありがとうございます。やっぱりそういうことでしたか!ありがとうございました。

その他の回答 (2)

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.2

>このコンパイラーはOSに最初から入っているのでしょうか? (CまたはC++のコンパイラということならば)入っていません。 >それとも自分でダウンロードしなくてはならないのでしょうか?もしダウンロードしなくてはならない場合どこにあるのでしょうか? 無料のものならダウンロードしてインストールできるでしょう。 VC系ならMicrosoft Visual C++ 2008 Express Editionが、 Borlandからも無料のコンパイラが提供されていたはずです。 当然有料のモノもあるわけですが…。 検索すればそれなりに情報はみつかるでしょう。

taiyaki_10
質問者

お礼

質問を間違えました。 >VCはマネージ拡張といってILコードが生成されるものもあります。(マネージ拡張はある意味C++とは別言語) >(CまたはC++のコンパイラということならば)入っていません。 というのはILコードをコンパイルするコンパイラ(VBやVCのマネージ拡張用のコンパイラ)はOSに最初からインストールされているのでしょうか?

  • hoge_piyo
  • ベストアンサー率57% (15/26)
回答No.1

機械語はCPUの種類によって違いますが、簡単に言うと現在普通のパソコンに入っているwindowsやLinuxが動くCPUはx86系といって、共通の命令セットを持っているので、機械語でもある程度の互換性はあります。 C、C++、VC++はILコードは生成されません。VCはマネージ拡張といってILコードが生成されるものもあります。(マネージ拡張はある意味C++とは別言語) ILコードは主にC#やVB.NET(他にもF#、IronRuby、IronPythonなど)がコンパイルされたときにできるものです。

taiyaki_10
質問者

お礼

回答ありがとうございます。あともうひとつ教えていただきたいのですが、ILコードって専用のコンパイラーがないといけないのはわかるのですが、このコンパイラーはOSに最初から入っているのでしょうか?それとも自分でダウンロードしなくてはならないのでしょうか?もしダウンロードしなくてはならない場合どこにあるのでしょうか?

関連するQ&A

  • .NET frameworkについて

    .NET frameworkとはJVMとほとんど同じような気がするのですが、いろんな言語が使えること以外に何かメリットあるのでしょうか? それと、たとえば、VC.NETで作ったプログラムはコンパイラで中間コードになって、実行時に.NET frameworkでインタプリタみたいに機械語に直して実行しているのでしょうか?

  • CとJavaはどのくらいスピードが違うの?

    BorlandのJBuilderなど、Javaもネイティブコードコンパイラがありますよね。質問ですが、 (1) UNIXで動くJavaのネイティブコードコンパイラで優秀なものはあるのでしょうか。 (2) C言語でコンパイルしたプログラムとJavaでネイティブコードコンパイルしたプログラムは、どのくらい速度に差があるのでしょうか? たとえば、Visual Basicも最近のバージョンはネイティブコードコンパイルができますが、C言語で作った同じ論理構造のプログラムに比べて、やはり、かなり実行速度が劣ります。

  • VCの使い方

    tororinnと申します。 現在、C言語の勉強をしております。 以前まではボーランド社の無償コンパイラを利用していたのですが、最近、VCを利用しております。 さて、質問ですが、 簡単に申しますとVCの使い方がわかりません。 以前、学校でVCを使っていたのですが、やり方をすっかり忘れてしまいました。 要は、ボーランドでやっていた時のように、 シンプルにコンパイラ(ビルド)をおこなった際に、 プロンプトに実行結果が出力されるのが、ベストです。 いろいろサイトを見て回って、 [新規作成]-「プロジェクト」-「win32 Application」 を選択して、 簡単な"hello"などを出力するだけのプログラムを試しに作ったのですが、 ビルドではエラーがないのに対し、 実行すると、「プログラムを実行できません」というメッセージが出てきます。 なにとぞ、よろしくお願い申し上げます。

  • C言語初心者です。

    C言語初心者です。 Macを使用しています。 概要を理解したいので教えてください。 コードをかく   ↓ 実行する   ↓ 結果が表示される というようなイメージなのですが違うでしょうか? gcc コンパイラ ターミナル X-code などが必要だというのはわかります。 しかしそれらをどのように、つかうかわかりません。 どなた様か初心者にもわかるように簡単に一から教えてください。 よろしくお願いいたします。

  • FortranをC++(VC++)へ変換

    FortranをCまたはC++へ変換したいと考えています。 f2cを使うと、一応変換は行ってくれるものの、出来あがったCのプログラムをコンパイルする際、fortranのライブラリを参照する必要があるなどの制約が生じてしまいます。 VC/VC++に対応したプログラムソースへ変換するツールをご存知ないでしょうか? また、今だと、VC#まで変換してくれるツールがあると非常に便利なのですが・・・ 大量のソースコードを変換する必要があり、変換時のミスなどを考えるとツールで機械的に変換する方法を探しています。

  • コンパイラーとアセンブラの違い

     今晩は。  コンパイラーとアセンブラとは何がどう違うのでしょうか。 またコンパイラー、アセンブラは、その後に更に機械語に変換されるとききましたが、なぜ一気にソースコード から機械語に変換しないのですか。  他にCalsという言語もあると聞きましたが、この言語も機械語とは違うと聞きました、とするとそもそもこの 言語自体の役割は何なんでしょう。

  • C言語のエディタ

    コンパイラ・実行機能が付いていない、シンプルなC言語のエディタはあるでしょうか?

  • C言語にて jpg ⇔ bmp 相互変換

    C言語でのjpg、bmp間の相互変換をしたいのですが、 良い方法 or 画像処理ライブラリはないでしょうか? PHPで実装したいので、ネイティブのC言語のみで書かれているほうが都合がいいです。 VC++などで画像ファイルの相互変換を行っているサイトはいくつもあるのですが・・・

  • C言語で分からないところがあります。整数値の分割取得みたいなこと・・

    C言語で分からないところがあります。整数値の分割取得みたいなこと・・ で困っています。 僕はC言語初心者です。 コンパイラはVC2008です。 今回整数値を分割して取得したいと考えています。 例えば次のような整数値(int型)があったとします。 235465667 この整数値を3つにわけて取得したいのです。つまり 235 465 667 としたいのです。このような働きをしてくれる便利な関数はないのでしょうか? 調べてみたのですが、内容が内容だけに探しにくくて見つけられませんでした。 もし、関数がなければ、どのようにすれば取得できるかコードを教えてほしいです。 よろしくお願いします!

  • C++BuilderやDelphiでVC++用のDLLの作成

    C++Builderの画面から新規作成からDLLウィザードを選ぶと、VC++スタイルのDLLを選択して作成できるようになっています。VC++用のDLLを作成出来るとは書かれていません。実際、VC++コンパイラからリンクを拒否されます。 また、VC++用のインポートライブラリをCOFF形式からBorland用のOMF形式に変換するユーティリティCOFF2OMF)は存在していますが、OMF形式をCOFF形式に変換する手法を見かけません。 変換方法を書いているWEBや雑誌記事とかを紹介してください。

専門家に質問してみよう