-3

私はac#プログラマーですが、今日はc ++への移行を考えています。最初に疑問に思うのは、CLRコンソールアプリケーションとWin32コンソールアプリケーションの2種類のプロジェクトがあるということです。

また、私を混乱させるのは、Win32ではprintfまたはcoutのいずれかを使用してコンソールに行を書き込むことができるということです。

CLRにいる間、使い慣れたConsole::WriteLineを使用することもできます

行を書くためだけにすべての機能を使用することのポイントと、CLRアプリケーションとWin32アプリケーションの違いは何でしょうか。

4

2 に答える 2

4
  • printfCの方法です。タイプセーフではありませんが、高速です。標準Cライブラリで実行されます。(C ++はこれを行うことができますが、それは正常ではありません。)
  • coutC++の方法です。これはタイプセーフであり、C++では通常の方法です。標準C++ライブラリで実行されます。
  • WriteLineは.Netの方法であり、したがってC ++/CLIの方法です。.Netライブラリで実行されます。
  • WriteConsoleWindowsの方法です。これは生のオペレーティングシステムコールなので高速ですが、使いにくく、移植性がありません。これは使用しないでください。

言語の比較に関しては、Cはそれほど複雑ではない言語です(コードをより複雑にします)が、C ++にはテンプレートがあるため、タスクによっては速度がほぼ同等です。これらは通常のWin32アプリケーションです。つまり、生のマシンコードに事前にコンパイルされており、プロセッサによって直接実行されます。C ++ / CLIは.Netフレームワーク上で実行されます。つまり、.Netフレームワークによって実行されているときにコンパイルされ、CまたはC++よりも実行速度が遅くなる傾向があります。

これを一粒の塩で全部取ってください。 WriteConsole他の人が簡単にできないことをすることができます。.Netフレームワークは、特定の点で驚くほど高速です。ただし、一般的には、言語に関連付けられているバージョンを使用してください。

于 2012-11-09T17:51:30.690 に答える
1

共通言語ランタイムであるCLRは、.netアプリケーションの構築に使用されます。.netライブラリが必要ない場合は、Win32コンソールを使用してください。

CoutはC++コマンドであり、printfはCコマンドです。C++はまだ多くのCコマンドをサポートしています。ほとんどの場合、私はC ++バリアントを使用しますが、それらがジョブを実行する方法に違いがあるため、状況によっては古いCコマンドを使用することをお勧めします。

別の注意:C#からC ++に移行する人へのちょっとしたアドバイス:自分でメモリを管理する必要があります。作成した新しいオブジェクトは削除する必要があります。C#のような組み込みのメモリマネージャーはありません。

于 2012-11-09T17:49:55.247 に答える