C++ 移行ガイド

コンパイラの動作モード

C++ 5.0 コンパイラには、「標準」モードと「互換」モードの 2 つの動作モードがあります。

標準モード

標準モードでは、C++ 国際標準の大部分の仕様が実装されており、C++ 4 で受け入れられていた言語とソースレベルの互換性の問題がいくつかあります。

さらに重要なことに、C++ 5.0 コンパイラは、標準モードでは、C++ 4.2 とは異なるアプリケーションバイナリインタフェース (ABI) を使用します。このため、一般的に、標準モードで生成されたコードと 4.2 コンパイラで生成されたコードとの間には互換性がなく、リンクすることはできません。この問題については、「バイナリ互換の問題」でさらに説明します。

既存のコードを 5.0 の標準モードでコンパイルするには、いくつかの修正が必要です。修正が必要な理由としては、以下が挙げられます。

互換モード

C++ 5.0 コンパイラには、C++ 4.2 から C++ 5.0 標準モードへの移行のために互換モードが用意されています。互換モードでは、C++ 4.2 コンパイラと、バイナリレベルでは完全な互換性が、ソースレベルではほぼ完全な互換性が保たれます (「互換性」とは、「上位互換性」を意味します)。古いソースコードおよびバイナリコードは、新しいコンパイラで動作できますが、この逆に、新しいコンパイラ用に作成されたコードが古いコンパイラで動作するとは限りません) 。ただし、互換モードと標準モードとの間にバイナリレベルの互換性はありません。互換モードは、Solaris 2.5.1、2.6、7 のいずれかを実行する Intel および SPARC で使用できます。ただし、SPARC v9 (64 ビット対応の Solaris 7) で使用することはできません。

互換モードを使用する理由としては、以下が挙げられます。