[Visual C++] は C と C++ を実行しますか? それぞれに異なるコンパイラがありますか?
C と C++ の両方を実行する 1 つのコンパイラ (または少なくとも 1 つのフロントエンド プログラム) があります (ただし、一部の人が信じていることとは反対に、C の別のモードで実行され、C++ に固有の構成を拒否します)。
Visual C++ でアンマネージドで実行されるコードを開発する方法はありますか? または、Visual C++ で開発されたコードを実行するには .NET が必要ですか? マネージとアンマネージは、使用するコンパイラに依存しますか?
はい、C または C++ で開発されたネイティブ コードは、.NET なしで実行できます。C++ に似た一種のハイブリッド (C++/CLI) がありますが、それが生成するものを実行するには .NET が必要です。しかし、私はそれについて心配することに多くの時間や労力を費やすことはありません。実際、私は通常、その存在を完全に無視します。
マネージド Visual C++ コードを作成して実行している場合、C# ではできなくて VC++ でできることはありますか?
はいといいえ。C++/CLI を使用すると、C# から直接使用するよりも、ネイティブ コードとの相互運用がかなり簡単になります。これは、基本的に、C# を使用することをお勧めする唯一の状況です (そして、少なくとも最後に見たときは、それがほとんどでした)。 MSも推奨するもの)。
それ自体のための学習 (これは素晴らしいことです) 以外に、VC++ を学習することで何らかの洞察を得ることができますか? もしそうなら、どこから始めればよいでしょうか?
本物の C++ を学ぶということですか、それとも Microsoft の C++/CLI を学ぶということですか? 上で指摘したように、C++/CLI は魚でも鳥でもありません。
実際の C++ はかなり別の話です。それを使用するかなりの理由があります。
- テンプレート: C# の「ジェネリック」が模倣するのが苦手なものを見つけてください。
- ネイティブ コード: 高速化に役立ち、.NET への依存を排除します。
- 標準ライブラリの一部 (すべてではない) は、はるかに優れた設計になっています。
- 最後まで最善を尽くす: RAII はあらゆる種類のリソースを管理しますが、GC はメモリのみを管理します。
個人的には、あなたは「1 つのコンパイラ」と「2 つのコンパイラ」に集中しすぎていると思います。これはほとんど無意味な違いです。本当の問題は、関与するコンパイラの数や、どのコードがどのコードを生成するかではなく、目的を達成する方法です。少なくとも VS 内で作業している場合は、通常、どのコンパイラかなどを整理します。ソースコードの特定の部分を呼び出す。
これは売り込み (またはそれに類するもの) と見なしてください。C++ は、C# に比べて驚くほど軽量というわけではないことを指摘しなければなりません。たとえば、C++ は実際にはリフレクションをサポートしていないため、C# よりも扱いにくいものがあります。他のいくつかの分野 (例えば、テンプレートのメタプログラミング) は可能ですが、理解するのが難しく、しばしば本当に厄介な構文を伴います。次に、ほとんどの場合、コンパイル時間は C# よりも C++ の方がかなり遅いという単純な事実があります。