-1

私は主にC#開発者であり、VisualStudioにVisualC++が存在すると混乱します。

次の質問があります。

  • それはCとC++を実行しますか、そしてそれぞれに異なるコンパイラがありますか?
  • Visual C ++で管理されていない状態で実行されるコードを開発する方法はありますか、それともVisual C ++で開発されたものを実行するには.NETが必要ですか?マネージドとアンマネージドは、使用するコンパイラーに依存しますか?

  • 書き込みを実行し、マネージドVisual C ++コードを実行している場合、C#では実行できなかったVC ++で実行できることはありますか?

  • 自分のために学ぶ以外に(これは素晴らしいことです)、VC ++を学ぶことで洞察を得ることができますか?もしそうなら、どこから始めればよいですか?

私はこれが単純なプログラミングの質問ではないことを理解しており、反対票の猛攻撃の準備ができていますが、私はこれについて合法的に興味があり、他の人もそうかもしれないと考えました。

4

2 に答える 2

1

Stephan T. Lavavejから聞いたちょっとした洞察は、MSツールチェーンのほぼすべてが何らかの形でMSVCに依存しているということです。必ずしも直接ではありませんが、これは非常に重要です。

それはCとC++を実行しますか、そしてそれぞれに異なるコンパイラがありますか?

C ++のみを実行しますが、ほとんどのCはC++コンパイラでコンパイルできます。

Visual C ++で管理されていない状態で実行されるコードを開発する方法はありますか、それともVisual C ++で開発されたものを実行するには.NETが必要ですか?マネージドとアンマネージドは、使用するコンパイラーに依存しますか?

いいえ、.NETやC ++/CLIは必要ありません。多くの人はそうしません。

書き込みを実行し、マネージドVisual C ++コードを実行している場合、C#では実行できなかったVC ++で実行できることはありますか?

低レベルのもので、CまたはC++ライブラリを使用している可能性があります。

自分のために学ぶ以外に(これは素晴らしいことです)、VC ++を学ぶことで洞察を得ることができますか?もしそうなら、どこから始めればよいですか?

C++が提供するすべての洞察を学びます。そのためにMSVCは必要ありません。コンパイラだけが必要です。

最初にC++を学びます。次に、Dan-oが指摘したようなMSDNドキュメントを読んでください。

于 2012-12-28T23:23:50.307 に答える
1

[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++ はかなり別の話です。それを使用するかなりの理由があります。

  1. テンプレート: C# の「ジェネリック」が模倣するのが苦手なものを見つけてください。
  2. ネイティブ コード: 高速化に役立ち、.NET への依存を排除​​します。
  3. 標準ライブラリの一部 (すべてではない) は、はるかに優れた設計になっています。
  4. 最後まで最善を尽くす: RAII はあらゆる種類のリソースを管理しますが、GC はメモリのみを管理します。

個人的には、あなたは「1 つのコンパイラ」と「2 つのコンパイラ」に集中しすぎていると思います。これはほとんど無意味な違いです。本当の問題は、関与するコンパイラの数や、どのコードがどのコードを生成するかではなく、目的を達成する方法です。少なくとも VS 内で作業している場合は、通常、どのコンパイラかなどを整理します。ソースコードの特定の部分を呼び出す。

これは売り込み (またはそれに類するもの) と見なしてください。C++ は、C# に比べて驚くほど軽量というわけではないことを指摘しなければなりません。たとえば、C++ は実際にはリフレクションをサポートしていないため、C# よりも扱いにくいものがあります。他のいくつかの分野 (例えば、テンプレートのメタプログラミング) は可能ですが、理解するのが難しく、しばしば本当に厄介な構文を伴います。次に、ほとんどの場合、コンパイル時間は C# よりも C++ の方がかなり遅いという単純な事実があります。

于 2012-12-29T02:02:59.750 に答える