3. 従来バージョンとの互換性
開発ツールがバージョンアップするときに常に気になるのは、従来のバージョンとの互換性だ。DelphiやC++Builderの場合、アーキテクチャやプラットフォームの違いなどはできる限りツール側で吸収し、開発者に意識させないというポリシーがある。前述のとおり、LLVMベースのアーキテクチャが採用されたことについても、フロントエンドの部分に大きな変更が加わることはない。
64bit対応に関しては、Win32環境向けとWni64環境向けのプロジェクトで単一のシステムヘッダ(.h/.hppファイル)を共有することで、Win32向けで作られた古いプロジェクトでもそのまま両方のターゲットに対応できるようにしているという。ヘッダファイル内では#ifdefによって環境ごとに設定を切り分けている。32bit環境と64bit環境ではポインタのサイズが異なるが、その定義も同様にヘッダファイルで切り分けを行っているとのこと。ただし、プログラム内で直接ポインタのサイズを利用した処理を行っているような場合には、64bit環境ではそのままでは正常に動作しないので注意が必要だ。
その他に、64bit版コンパイラを使う場合に注意すべき内容として次のような変更点が挙げられた。
-
デフォルト引数は関数宣言でのみ指定可能(図3.1)
- 関数ポインタやクロージャにはデフォルト引数は指定できない
-
プリプロセッサ内でsizeofは使用できない(図3.2)
- 実行時に判定する必要がある
-
テンプレートのパースが厳密に2フェーズで行われるようになった(図3.3)
- 2フェーズ目でコンパイルされる関数などを1フェーズ目の部分で使うことはできない
高橋氏によるデモでは、ターゲットとしてWin64を指定した場合には新しいコンパイラが使われたが、Win32を指定した場合には従来のコンパイラが使われる仕組みになっていた。Win32向けのコンパイラも正式リリースでは新しい機能に対応する予定だが、完全に新しいコンパイラに置き換わるのか、それとも従来のコンパイラに新機能をバックポートする形になるのかは、まだ確定的ではないとのことだ。この点については正式リリースの段階で発表されるだろうという話だった。
4. XE3に向けたマイグレーションを推進
C++Builder XE3が正式にリリースされるのは今年後半以降になるが、エンバカデロでは、将来バージョンのプレビュー版へのアクセス権と、1年以内にリリースされる次期バージョンが無償で入手できる、新しい製品ライセンス「C++Builder XE2 Future」の提供を開始している。さらに、2012年6月29日までは同ライセンスを20%OFFの価格で購入できるキャンペーンも実施中だ。
C++Builder XEおよびXE2のライセンスには旧バージョンのC++Builderへのアクセス権も付属するため、古いプロジェクトでも、XE3に向けて順次マイグレーションしていくことができる。高橋氏は講演の最後に、「ぜひこの機会にC++Builder XE2を購入し、計画的なマイグレーションを検討していただけたらと思います」と呼びかけた。