C ++ CLIはC ++のスーパーセットですか?
質問
C ++ CLI コンパイラは、変更せずにC ++クラスの大きなセットをコンパイルできますか?
C ++ CLIはC ++のスーパーセットですか?
解決
技術的にはありませんが、C ++コードの標準に応じて、おそらく大丈夫でしょう。 Windowsのものを取得すると、問題が発生する可能性があります。仕事で使用するゲームエンジン全体をC ++ / CLIで一度コンパイルしましたが、うまく機能しました。同僚はすべてのmozillaに対して同じことをしましたが、そのような運はありませんでした。
他のヒント
Wikipedia によると:
C ++ / CLIは、C ++スーパーセット指向のマネージC ++ではなく、独自の言語(たとえば、新しいキーワードセットを使用)と見なす必要があります
私はまだC ++ / CLIの学習曲線に慣れていませんが、私自身も同じ質問をしました。これまでのところ、C ++ / CLIは言語として、標準C ++。
CLI拡張機能を使用しない場合、C ++コードはネイティブのアンマネージコードになり、本質的には同じであるはずですが、ネイティブx86ではなくCLR ILにコンパイルされます。
CLI拡張機能の使用を開始(およびオブジェクト/ハンドル/マネージクラスの使用を開始)すると、基盤となるCLRプラットフォームとのやり取りをより頻繁に開始します。その時点で、それは本質的に新しい「言語」になり、「管理されていない」と「管理されていない」との間で考えを分ける必要があります。サイドと「管理対象」側。
C ++ / CLIはC ++のスーパーセットではありません。むしろ、追加されたサブセットです。例えば。 C ++ / CLIは多重継承をサポートしていません。
アンジェロ
Marcus Heegeの著書「Visual C ++プログラマー向けのエキスパートC ++ / CLI.NET」の3ページ目:
C ++ / CLIは、 から恩恵を受けるC ++言語 サービスの実装 CLIが提供しています。
さらに同じページをさらに下に:
C ++ / CLIはC ++言語のスーパーセットです。
彼の優れた本はこちらから無料で入手できます。
(大規模な)Qtライブラリ全体をC ++ / CLIとして minor の変更を加えてコンパイルできました(ほとんどがビルド環境ですが、Qtソースコードの1つのバグも修正されました)