C ++ CLIコンパイラは、変更なしでC ++クラスのいくつかの大きなセットをコンパイルできますか?
C ++CLIはC++のスーパーセットですか?
ウィキペディアによると:
C++/CLI は、C++ スーパーセット指向の Managed C++ ではなく、独自の言語 (たとえば、新しいキーワード セットを含む) と考える必要があります。
技術的にはできませんが、C++ コードがどれほど標準的であるかによっては、おそらく問題ないでしょう。Windows に取り掛かると、問題が発生する可能性があります。仕事で使用するゲーム エンジン全体を一度 C++/CLI でコンパイルしたところ、問題なく動作しました。同僚がすべての mozilla に対して同じことをしましたが、そのような運はありませんでした。
私はまだ C++/CLI の学習曲線に慣れていませんが、私自身も同じ疑問を持っていました。これまでのところ、C++/CLI は言語として標準 C++ のスーパーセットであると判断しています。
CLI 拡張機能を使用しない場合、C++ コードはネイティブのアンマネージ コードになり、本質的に同じになりますが、ネイティブ x86 ではなく CLR IL にコンパイルされます。
CLI 拡張機能の使用を開始すると (そして、オブジェクト/ハンドル/マネージド クラスの使用に陥り始めると)、基礎となる CLR プラットフォームとのやり取りがより頻繁に開始されます。その時点で、それは本質的に新しい「言語」になり、「管理されていない」側と「管理されている」側の間で思考を分離する必要があります。
C++/CLI は C++ のスーパーセットではありません。むしろ、追加のあるサブセットです。EG C++/CLI は多重継承をサポートしていません。
アンジェロ
Qtライブラリ全体(巨大です)をC ++ / CLIとしてコンパイルできましたが、マイナーな変更が加えられました(主にビルド環境で、Qtソースコードの1つのバグも修正されました)。
Marcus Heege の著書「Expert C++/CLI.NET for Visual C++ Programmers」の 3 ページには、次のように記載されています。
C++/CLI は、CLI の実装が提供するサービスを利用するために C++ 言語に作成された一連の拡張機能です。
そして同じページのさらに下:
C++/CLI は、C++ 言語のスーパーセットです。
彼の優れた本は、ここから無料で入手できます。