2011-06-18 8 views
9

「普通の」C++の意味を明確にしましょう。まずはWalter Savitchの「C++での問題解決」を読んでいます。私が知っている限り、これはMicrosoftやUnix向けに書かれたものではありません。だから私の質問は、私はこの本(私は私の普遍的な知識を得るために使用している)で学んでいることは、+ C++について何を読んでいるのと違うのですか?CLI/C++とは何ですか?それは '普通の' C++とどう違うのですか?

CLI C++は、Visual C++を使用した場合に遭遇するものですか?私は全く混乱している。

答えて

11

C++/CLI(C++/CLRもあります)は、ネイティブC++と.NETフレームワークの間のどこかに配置された言語を指します。

通常、ネイティブコード(純粋なC++)とマネージコード(VB、C#、F#など)をブリッジする必要があるアプリケーションに使用されます。

C++/CLIは通常のC++とはまったく異なる獣です。人々がVisual C++と言うとき、その意味は文脈によって変わることがあります。ときには、共通言語ランタイム(CLR)レイヤーが有効になっているC++を意味する場合もあります。残念ながら、そこにはさまざまな用語があり、多くの誤称がありますが、何ができますか?

+0

私はちょうど標準のC + +、テンプレートを使用して、私はCLRを必要としませんブーストをしたいのですか? .NETライブラリを使用したいのであれば、なぜCLRを使用する必要がありますか?ありがとう – Jean

+1

.NETライブラリを呼び出す予定がある場合、または呼び出し元の.NETコードでコードをうまく再生したい場合は、いつでもCLRを使用します。単純なC++を書くことを望むなら、C++/CLIを気にしないでください。どちらも目的のドメインを持っていますが、純粋なC++を作成している場合は、CLRの必要はありません。 –

+3

"*時にはC++/CLR *"いいえ - 言語の名前はC++/CLIです。これまでC++/CLRと呼ばれていたのであれば、これ以上良く分からない人は間違いです。 – ildjarn

6

C++とC++/CLIが大きく異なります。 C++/CLIは、.NETからネイティブコードへのレイヤーを可能にするためにMicrosoftによって作成されたC++の管理された.NETバージョンです。

+0

http://en.wikipedia.org/wiki/C%2B%2B/CLI –

+4

"Visual C++とC++/CLIは大きく異なります*"このステートメントは、私が思う以上に混乱を招いています。 Visual C++はコンパイラであり、C++/CLIは言語です。 – ildjarn

+0

@ildjarn:良い点、私はいつもMicrosoftのC++の実装と見ていました。これを修正しました。 – Xeo

1

C++/cliはMicrosoftのVisual C++ブランドツールの最新バージョンです。 (C++/cliの前に別のデザインがありました)

C++/cliは実際には2つのバージョンのC++です。高度に標準化されたC++コンパイラと、CLI仮想マシン上で動作するC++のバージョンもあります。明らかに、標準のC++はVM上で動作することはありませんので、言語に対する2つのアプローチを決定しました。

アンマンエージングコードとマネージコードを組み合わせて使用​​することができます。 "Unmanaged"は、標準のC++のようにコンパイルされたコードです。 「Managed」は、CLI(.Net)のコードコンパイラであり、事実上マシンのバイトコードです。マイクロソフトは、管理コードとアンマネージコードの両方に幅広いAPIを提供しています。製品では、両方のAPIにアクセスできます。

言語とツールを使用して標準のC++アプリケーションを開発することができます。非標準の拡張機能を使用しないように注意するだけです。疑いがある場合は、しばらくの間、別のコンパイラでコンパイルすることをお勧めします。管理側は完全に非標準であり、非管理側でも非標準の拡張が数多くあります。

PS私は専門家ではありませんが、私は興味があり、この先週について読んでいます。私はあなたの質問が答えに値すると思った。がんばろう!

+0

"C++/cliはMicrosoftのVisual C++ブランドのツールの最新バージョンです。"これは少し不正確/誤解を招くことです。 Visual Studioはツールセットです。C++/CLIは、その中でサポートされている言語の1つです。 – DuckMaestro

+1

* "CLI仮想マシン上で動作するC++のバージョン" * - CLRがあります。これは*仮想実行環境*です。これは仮想マシンではなく**です。 ILコードは実行前に常にネイティブマシンコードにコンパイルされています**。 * "明らかに標準的なC++は決してVM上で動作しません" * - それについては何も明らかではなく、C++言語仕様では、C++がネイティブマシン命令にコンパイルする必要がありません。 C++は、VMで動作するように実装することはできますが、それでも* "Standard C++" *と呼ぶことができます。 – IInspectable

関連する問題