Inside the C++/CX Design - Visual C++ Team Blog - Site Home - MSDN Blogs

公開:2012-03-11 18:06
更新:2020-02-15 04:37
カテゴリ:c++/cx

Inside the C++/CX Design - Visual C++ Team Blog - Site Home - MSDN Blogs.

我々は実際に言語拡張なしにWindows 8をサポートするためのWRL(Windows Runtime Library)と呼ばれるC++テンプレートライブラリを開発した。WRLは概ね良好で、どのように実装されているのかを見ることができ、またそれを見ることで開発者はWindows8の低レベルの実装の詳細について知識を肥やすことができる。 WRLはたくさんのWindows開発者に使用されたが、COMをサポートするATLと同じ問題を抱えることにとなった。
  1. コンポーネントを作成することがとても難しい。インターフェースに関するたくさんの低レベルなルールについて知っておかなくてはならない。
  2. インターフェースと型を作成するため別のツール(MIDL)を使用しなければならない。
  3. 例外や戻り値のために低レベルインターフェースから高レベルインターフェースへのマッピングを自動化する必要があるがその方法がない。
  4. 作成・消費パターンの統一性がない。

そうか。実際にライブラリでのWindows 8のサポートを試してみたんだな。それではいろいろ煩雑な作業が必要なのでC++/CXなる言語拡張を行うことになったのだ。

C++/CLIに似た文法なのは「本の虫」で江添さんが言っていたようにMSにとって「合理的」であったためである。

かなり昔、仕事でCOMオブジェクトを実装したことがあるが、DLLにまで落とすまでかなり冗長で煩雑な作業が必要だった。さらに変更するときも面倒くさかった記憶がある。作業の多くはABIと他言語からアクセスさせるための実装に割かれる。

今回のC++/CXはそのあたりの労力を激減させるためにどうしても必要な言語拡張だったのである。