[C++ コンパイラ|互換性]

提供: RAD Studio
移動先: 案内検索

[C++ コンパイラ] への移動


[プロジェクト|オプション...|C++ コンパイラ|互換性]

このダイアログ ボックスを使用して、C++ コンパイラの互換性オプションを設定します。

このダイアログ ボックスの各オプションにより、以前のバージョンのコンパイラと下位互換性が維持されます。一般に、これらのオプションは、このような互換性を必要とする場合にのみ[True]に設定してください。通常、デフォルト値は[False]です。


オプション 説明

[ターゲット]、[適用...]、[保存...]

[ターゲット]オプション」を参照。

共通項目

[<プロジェクト名> のプロジェクト オプション]ページの共通項目」を参照。

[C++]互換性オプション

[C++]互換性オプション 説明 コンパイラ スイッチ
  bcc32     bcc32c     bcc64     bcciosarm64     bccaarm  

['低速の' 仮想ベース ポインタ]

'低速' の仮想ベース ポインタを使用します。デフォルト値は[false]です。

-Vv

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[コンストラクタのディスプレースメント]

コンストラクタのディスプレースメントをサポートします。デフォルト値は[false]です。

-Vc

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[テンプレートをメンバ関数として明示的に特化]
(-Vbx)

テンプレートをメンバ関数として明示的に特化します。デフォルト値は[false]です。

-Vbx

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[古い形式の Borland クラス レイアウト]

これは、下位互換用のスイッチで、C++ コンパイラが、C++Builder の古いバージョンと同じ方法で、派生クラスのレイアウトを実行します。C++Builder の古いバージョンを使うソース ファイルをコンパイルする必要がある場合(再コンパイルできない DLL、およびクラス レイアウトがハードコードされている古いデータ ファイルがある場合など)は、このオプションを有効にします。デフォルト値は[false]です。

-Vl

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[古い形式のクラス引数]

古い形式のクラス引数をサポートします。デフォルト値は[false]です。

-Va

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[古い形式の明示的なテンプレート特化]

古い形式の明示的なテンプレートの特化を許可します。デフォルト値は[false]です。

-Vbe

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[古い形式の virdef 生成]

古い形式の virdef 生成を使用します。デフォルト値は[false]です。

-Vs

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[最初に 'this' をプッシュ]

Pascal と同様に、'this' を最初にプッシュします。このコンパイラは通常、右のパラメータからスタックにプッシュします。デフォルト値は[false]です。

-Vp

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[VC++ との互換性]

Microsoft Visual C++ との互換性を維持します。つまり __fastcall の呼び出し規約に対して __msfastcall を代用します。VCL アプリケーションを作成する場合は、このオプションを使用しないでください。リンカ エラーが大量に発生する原因となります。デフォルト値は[false]です。

-VM

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[VTable を先頭に配置]

オブジェクト レイアウトの先頭に仮想テーブル ポインタを置きます。デフォルト値は[false]です。

-Vt

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[ゼロ長の空の基底クラス]

通常、データ メンバが定義されていないクラスでも、サイズは 1 バイトです。このオプションを設定すると、コンパイラは、このような使用されていないバイトを、メモリ レイアウトにおいても、すべての派生クラスのサイズを合計する場合においても無視します。基底クラスが空の場合は、派生クラスではスペースを消費しません。デフォルト値は[false]です。

-Ve

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[ゼロ長の空のクラス メンバ関数]

通常、クラス定義のデータ メンバのサイズは、最小で 1 バイトです。このオプションを有効にすると、空の構造体の長さを 0 にできます。デフォルト値は[false]です。

-Vx

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[全般]オプション

[全般]オプション 説明 コンパイラ スイッチ
bcc32 bcc32c bcc64 bcciosarm64 bccaarm

[下位互換性]

下位互換性に関するすべての互換性 -Vxxx オプションを有効にします。デフォルト値は[false]です。

-Vb

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[字句ダイグラフの走査を無効にする]

字句ダイグラフの走査を無効にします。 ダイグラフとは連続する 2 文字で、一部のキーボードで入力が難しい単一文字に代わるものです。 このオプションが True の場合、ダイグラフが認識されなくなります。 デフォルト = False

-Vg

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[参照への参照をただの参照に変換しない]

参照への参照は不正とみなされていました。 新しいデフォルトの動作は、C++11x のルールに従います。 コンパイラにより、参照への参照は参照に変換されるようになりました。

例:

typedef int & intr;
typedef intrr &;

intrr 型は有効で、新しい C++ のルールでは intr と同じ型です。Bcc32(Rev. 6.0 以上)ではデフォルトでこれらのルールに従います。以前の C++ のルールでは、intrr は無効です。[参照への参照をただの参照に変換しない]オプションを有効にすると、intrr は、以前と同じようにエラーとして報告されます。

-Vbc

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[呼び出し規約をマングルしない]

このオプションを設定すると、違いがコード生成オプションに互換性がないという点だけである関数については、コンパイラで関数名は区別されません。たとえば、このオプションを設定にすると、リンカでは、__fastcall メンバ関数に対する呼び出しが cdecl 呼び出し規約で行われるかどうかを検出しません。このオプションは下位互換性のためだけにあります。このオプションにより、再コンパイルできない過去のライブラリ ファイルをリンクできます。デフォルト値は[false]です。

-VC

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[すべての互換性オプションを有効にする]

古いコードの作成時によく使用した互換性オプションを有効にします。

  • '['低速の' 仮想ベース ポインタ] -Vv
  • [古い形式のクラス引数] -Va
  • [最初に 'this' をプッシュ] -Vp
  • [VTable を先頭に配置] -Vt
  • [コンストラクタのディスプレースメント] -Vc
  • [for 文のスコーピング] -Vd
  • [ゼロ長の空のクラス メンバ関数] -Vx

デフォルト値は[false]です。

-Vo

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[新しい演算子名を有効にする]

'and'、'or'、'and_eq'、'bitand' などの新しい演算子名を有効にします。デフォルト値は[false]です。

-Vn

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[for 文のスコーピング]

for ループ式で宣言された変数のスコープを指定します。次のコード例の出力は、このオプションの設定によって変わります。

int main(void)
{
  for(int i=0; i<10; i++)
  {
    cout << "Inside for loop, i = " << i << endl;
  } // for ループ ブロックの終わり
  cout << "Outside for loop, i = " << i << endl; // このオプションなしでエラー
} // ループを保有するブロックの終わり

このオプションを無効にすると(デフォルト)、処理が for ループの終わりに達すると変数 i がスコープからはずれます。 このため、このオプションを無効にしてこのコードをコンパイルすると、「未定義のシンボル」コンパイル エラーになります。

[for 文のスコーピング]オプションを有効にすると、処理が for ループを含むブロックの終わりに達すると変数 i がスコープからはずれます。この場合、コード出力は次のようになります。

Inside for loop, i = 0
...
Outside for loop, i = 10

デフォルト値は[false]です。

-Vd

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[セグメント内のグローバル関数]

すべてのグローバル関数を独自の仮想/弱セグメントに生成します。
デフォルト値は[true]です。

-VA

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[Microsoft のヘッダー検索アルゴリズム]

Microsoft 検索アルゴリズムを使ってヘッダー ファイルを探します。
デフォルト値は[true]です。

-VI

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[MBCS にはネイティブ コードを生成]

マルチバイト文字に対して Unicode ではなくネイティブ コードを生成します。
デフォルト値は[false]です。

-Vw

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[const オブジェクトに対する 非 const 呼び出し]

const オブジェクトの非 const メンバ関数を呼び出せるようにします。
デフォルト値は[false]です。

-Vbn

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[非 const 参照のバインディング]

非 const 参照のバインディングを許可します。
デフォルト値は[false]です。

-Vbr

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[非 const 文字列リテラル]

文字列リテラルを 'const' として扱いません。
デフォルト値は[false]です。

-Vbs

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[テンプレートでは古い 'using' ルールに準拠]

テンプレート内の 'using' に古い Borland ルールを適用します。
デフォルト値は[false]です。

-Vbu

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[以前の 8.3 形式でのインクルード ファイル検索]

古い 8.3 形式の検索アルゴリズムを用いてヘッダー ファイルを探します。
デフォルト値は[false]です。

-Vi

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[古い形式のオーバーロード解決]

古いオーバーロード解決ルールを使用します。
デフォルト値は[false]です。

-Vbo

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[古いタイプ ルールを三項演算子に適用する]

Borland の古いタイプ ルールを三項演算子に適用します。
デフォルト値は[false]です。

-Vbt

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[複数文字定数の順序を逆転]

コンパイラは、複数文字定数の順序を逆転します。
デフォルト値は[false]です。

-Vr

N/A

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

BCC32 用 -Vb コンパイラ オプション

メモ: 互換性オプションには、-Vb で始まる BCC32 用コンパイラ スイッチを持つものが複数あります。BCC64 では、これらの互換性オプションをサポートしていません。-Vb 互換性オプションを次の表にまとめます。
コマンドライン スイッチ 意味

-Va

古い形式のクラス引数をサポートします。

-Vb

すべての -Vb スイッチをオンにします。バージョン 5.8.2 以前の Bcc との下位互換性を有効にします。

-Vb+

すべての -Vb スイッチをオンにします。

-Vb-

すべての -Vb スイッチをオフにします。

-Vb.

すべての -Vb スイッチをリセットしてデフォルト値にします。コマンドラインでのみ使用可能です。IDE では使用できません。

-Vbc

参照への参照をただの参照に変換せず、修飾参照を許可します。

-Vbe

古い形式の明示的なテンプレートの特化を許可します。

-Vi

古い 8.3 形式のアルゴリズムを用いてヘッダー ファイルを探します。

-Vbn

const/volatile オブジェクトの非 const/非 volatile メンバ関数の呼び出しを許可します。

-Vbo

Borland の古いオーバーロード解決ルールを使用します。

-Vbr

Borland の古い参照バインディング規則を有効にします。

-Vbs

文字列リテラルを非 const として扱います。

-Vbt

Borland の古いタイプ ルールを三項演算子に適用します。

-Vbu

テンプレート内の 'using' に古い Borland ルールを適用します。

-Vbx

テンプレートをメンバ関数として明示的に特化します。

関連項目