XE 向けに行われた C++Builder の変更点
Delphi XE および C++Builder XE の新機能 への移動
- C++ 用の ActiveX では ATL ではなく DAX が使用されるようになりました:
- 基盤となる ActiveX フレームワークが ATL(アクティブ テンプレート ライブラリ)から DAX(Delphi ActiveX ライブラリ)に変更されました。 詳しくは以下を参照してください。
__property
の拡張構文を利用すると、C++ でのインターフェイスの実装が簡単にできます:- C++Builder には、新しい
implements
</wiki-bold> 属性を追加するための、__property キーワード用の拡張構文があります。 <wiki-bold>implements
属性を利用すると、継承を使用せずに TObject ベースのクラスにインターフェイスを実装できます。__property implements
を使用すると、C++Builder XE の ActiveX プロジェクトの ATL から DAX への移行が簡単になります。また、DAX によって提供される ActiveX ヘルパの使用が簡単になります。 「C++Builder XE における __property implements サポート」を参照してください。
- C++Builder には、新しい
- VCL を使用する C++ アプリケーションで[_TCHAR のマップ先]オプションが
[wchar_t]
に設定されるようになりました:- VCL を使用する新規の C++ アプリケーション(VCL を使用する C++ コンソール アプリケーションを含む)では、[_TCHAR のマップ先]オプションが(これまでの)
[char]
ではなく[wchar_t]
に自動的に設定されるようになりました。 - また、これらのアプリケーションには、
main
にマップされる_tmain(...)
エントリ ポイントが含まれていなければなりません。 - これらの C++ アプリケーションは、自動的に適切なマップ関数を使用します。 「C++ アプリケーションの Unicode 対応」を参照してください。
- System.UnicodeString.t_str 関数が、const char* ではなく const wchar_t* を返すようになりました。 また、t_str は非推奨になっています。
- VCL を使用する新規の C++ アプリケーション(VCL を使用する C++ コンソール アプリケーションを含む)では、[_TCHAR のマップ先]オプションが(これまでの)
- 右辺値参照の新しいルール:
- 新しい右辺値参照ルールをサポートするようにコンパイラが変更されました。
- C++ 仕様(作業ドキュメント)では、右辺値参照のバインディング規則が変更されました。 手短に言えば、右辺値参照は名前付き左辺値にはもうバインドできません(オーバーロード解決の場合を除きます。こちらの方は変更ありません)。
- 「右辺値参照(C++0x)」を参照してください。
- 新しいヘッダー ファイル stdbool.h:
- この C99 ヘッダー ファイルが、C++Builder の C ランタイム ライブラリに追加されました。 stdbool.h には、bool、true、false、__bool_true_false_are_defined などのブール値が定義されています。
- BCC32.EXE の -Vbr オプションに対する新しい定義:
- C++ のコンパイラ オプション
-Vbr
は、非 const のバインディングだけでなく、すべての参照のバインディングに対する全般的な下位互換性スイッチになりました。 従って、-Vbr
の定義は、 "非 const 参照のバインディングを許可"
- から下記に変更されました。
"Borland の古い参照バインディング規則を有効にする"
- 「C++ コマンドライン コンパイラ: BCC32」を参照してください。
- C++ のコンパイラ オプション
- CodeGuard エラーのヘルプが復活しました:
- 特定の CodeGuard エラーについてヘルプを利用できるようになりました。 「CodeGuard エラー」を参照してください。
- dllimport と dllexport への変更:
- テンプレート クラスに次のような __declspec(dllimport) と __declspec(dllexport) が実装されました。
- dllimport 修飾子は、インラインのテンプレート関数が(インラインまたは非インラインで)インスタンス化されるのを防止します。
- dllexport 修飾子は、インライン関数を含むクラス全体をインスタンス化してエクスポートします。
- 新しいコンパイラ オプション:
- 「XE 向けに行われた C++ コンパイラ オプションの変更点」を参照してください。
- C++ における Delphi RTTI の追加のサポート:
- __declspec キーワード拡張子が属性
delphirtti
を用いて使用できます。 クラスが__declspec(delphirtti)
にマークされている場合、コンパイラがそのパブリック メソッドの RTTI を生成します。 「__declspec(delphirtti)」を参照してください。
- __declspec キーワード拡張子が属性