- 締切済み
VC++2008EE 2種のコンソールの違い
VisualC++入門書で学習中の者です。(VisualC++2008EE使用) Win32コンソールとCLRコンソールの2種類があり、本ではWin32コンソールのみ使用して解説してます。 構成プロパティ/全般/プロジェクトの規定値では、共通言語ランタイムサポート(/clr)になっています。これでC++/CLIに対応するいうことです。 では、この場合のWin32コンソールとCLRコンソールとで違いって何でしょうか。 標準C++の記述とC++/CLIの記述が混在したときにコンパイルでエラーになる場合があるとか、実行速度に違いが出るとかの差が生じるものでしょうか。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- aris-wiz
- ベストアンサー率38% (96/252)
回答No.1
>標準C++の記述とC++/CLIの記述が混在したときにコンパイルでエラーになる場合があるとか、 >実行速度に違いが出るとかの差が生じるものでしょうか。 そんなところです。 >この場合のWin32コンソールとCLRコンソールとで違いって何でしょうか。 Win32アプリケーションとは、特定のCPUに依存した CPUが直接読むことができる、マシン語に翻訳されます。 一方CLRアプリケーションとは、MS社が提供する 共通言語コンポーネントを使用するため一般的には、 中身はインタープリンタの中間言語に翻訳されます。 これが主な違いです。 CLRでは実行する際、CPUが直接命令を読むことができない為、 実行する為の環境として、.net frameworkが必要になります。 インタープリンタの中間言語を使用する為、一般に実行速度が マシン語のそれと比べて遅くなります。
補足
回答ありがとうございます。 質問があまりよくない書き方で趣旨がうまく伝わらなかったようです。 Win32コンソールアプリでも共通言語ランタイムサポート(/clr)対応にすると、 System::Console::WriteLine("Hello World!"); のような記述で動作するんです。 Win32コンソールアプリは中間言語経由しないという話なので、これはどうやって処理しているのだろうという疑問がありました。Win32コンソールアプリとCLRコンソールアプリで、System::Console::WriteLine("Hello World!"); のような.NET版を処理するのにどのような違いがでるのだろうなという疑問です。