Visual Studio 2017 を使用することをお勧めします

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

 

公開日: 2016年7月

Visual Studio 2017 RC の最新のドキュメントの詳細については、Visual Studio 2017 RC ドキュメントをご参照ください。

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

/vmm  
/vms  
/vmv  

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

オプション説明
/vmmクラスのメンバーへの最も一般的なポインター表現を多重継承するクラスに対して指定します。

対応する継承キーワードおよび #pragma pointers_to_members の引数は multiple_inheritance です。

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

メンバーへのポインターが宣言されているクラス定義の継承モデルが仮想モデルの場合、コンパイラはエラーを出力します。
/vmsクラスのメンバーへの最も一般的なポインター表現を何も継承しないクラスか、単一継承するクラスに対して指定します。

対応する継承キーワードおよび #pragma pointers_to_members の引数は single_inheritance です。

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

メンバーへのポインターが宣言されているクラス定義の継承モデルが多重継承モデルまたは仮想モデルの場合、コンパイラはエラーを出力します。
/vmvクラスのメンバーへの最も一般的なポインター表現を仮想継承するクラスに対して指定します。 エラーになることはありません。これは、既定の設定です。

対応する継承キーワードおよび #pragma pointers_to_members の引数は virtual_inheritance です。

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

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

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

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

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

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

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

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

/vmb、/vmg (処理形式)
コンパイラ オプション
コンパイラ オプションの設定

表示: