/vmm、/vms、/vmv (通常の最適化)

更新 : 2007 年 11 月

/vmb、/vmg (処理形式)/vmb、/vmg (処理形式) として選択されたときに使用します。これらのオプションは、まだ検出されていないクラス定義の継承モデルを示します。

/vmm
/vms
/vmv

解説

これらのオプションの説明を次の表に示します。

オプション

説明

/vmm

クラスのメンバへの最も一般的なポインタ表現を多重継承するクラスに対して指定します。

対応する Inheritance Keywords および pointers_to_members の引数は multiple_inheritance です。

この表現は、単一継承に必要な表現よりもサイズが大きくなります。

メンバへのポインタが宣言されているクラス定義の継承モデルが仮想モデルの場合、コンパイラはエラーを出力します。

/vms

クラスのメンバへの最も一般的なポインタ表現を何も継承しないクラスか、単一継承するクラスに対して指定します。

対応する Inheritance Keywords および pointers_to_members の引数は single_inheritance です。

これは、クラスのメンバへのポインタの最小サイズの表現です。

メンバへのポインタが宣言されているクラス定義の継承モデルが多重継承モデルまたは仮想モデルの場合、コンパイラはエラーを出力します。

/vmv

クラスのメンバへの最も一般的なポインタ表現を仮想継承するクラスに対して指定します。エラーになることはありません。これは、既定の設定です。

対応する Inheritance Keywords および pointers_to_members の引数は virtual_inheritance です。

このオプションは、ポインタを解釈するために、ほかのオプションよりもポインタのサイズが大きくなり、追加コードが必要になります。

上のどの継承モデル オプションを選択しても、クラス メンバを指すすべてのポインタに対してそのモデルが適用されます。継承の種類やポインタ宣言の位置 (クラス定義の前または後ろ) は関係ありません。したがって、常に単一継承のクラスを使用している場合は、/vms を使ってコンパイルするとコード サイズが小さくなります。最も一般的な方法でコンパイルするには、 /vmv を使ってコンパイルします。ただし、このオプションではデータ表現が大きくなります。

Visual Studio 開発環境でこのコンパイラ オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。

  2. [C/C++] フォルダをクリックします。

  3. [コマンド ライン] プロパティ ページをクリックします。

  4. [追加のオプション]ボックスにコンパイラ オプションを入力します。

このコンパイラ オプションをコードから設定するには

参照

参照

/vmb、/vmg (処理形式)

コンパイラ オプション

コンパイラ オプションの設定