/Oy (フレーム ポインターの省略)

呼び出し履歴にフレーム ポインターが作成されなくなります。

/Oy[-]

解説

このオプションを使用すると、フレーム ポインターを設定したり削除したりする必要がなくなるため、関数呼び出しが高速化されます。 また、レジスタ (Intel 386 以降では EBP) をもう 1 つ解放して、頻繁に使用される変数と部分式を格納します。

/Oy ではフレーム ポインターの省略が有効になり、/Oy- では省略が無効になります。 /Oy は、x86 コンパイラでのみ使用できます。

コードに EBP ベースのアドレス指定が必要な場合は、/Oy– オプションの後ろに /Ox オプションを指定するか、optimize に "y" 引数と off 引数を指定すると、EBP ベースのアドレス指定が最大限に最適化されます。 コンパイラは、EBP ベースのアドレス指定が必要な場所を検出します。たとえば、_alloca 関数および setjmp 関数や構造化例外処理が使われている場合にアドレス指定が必要です。

/Ox (最大限の最適化) オプションと /O1、/O2 (プログラム サイズ、実行速度) オプションを使用すると、/Oy が暗黙的に指定されます。 /Ox/O1、または /O2 の各オプションの後に、/Oy– を指定すると、/Oy が、明示的に使用されていても暗黙に使用されていても無効になります。

/Oy コンパイラ オプションを使用すると、コンパイラでフレーム ポインター情報が表示されないため、デバッガーの使用が難しくなります。 デバッグ コンパイラ オプション (/Z7、/Zi、/ZI) を指定した場合は、他の最適化コンパイラ オプションの後に /Oy- オプションを指定することをお勧めします。

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

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

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

  3. [最適化] プロパティ ページをクリックします。

  4. [フレーム ポインターなし] プロパティを変更します。 このプロパティは、/Oy オプションのみ追加または削除します。 /Oy- オプションを追加する場合は、[コマンド ライン] をクリックし、[追加のオプション] を変更します。

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

参照

関連項目

/O オプション (コードの最適化)

コンパイラ オプション

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