#pragma option_override ディレクティブを使用して、特定の関数に適用する代替の最適化オプションを指定することができます。
.-,------------. V | >>-#--pragma--option_override--(--fname----"--option--"-+--)---><
option の有効な設定と構文、および対応するコマンド行オプションは以下に示す通りです。
#pragma option_override option の設定と構文 | コマンド行オプション | 例 |
---|---|---|
opt(level,number) | -O, -O2, -O3, -O4, -O5 | #pragma option_override (fname, "opt(level, 3)") |
opt(registerSpillSize,num) | -qspill=num | #pragma option_override (fname, "opt(registerSpillSize,512)") |
opt(size[,yes]) | -qcompact | #pragma option_override (fname,
"opt(size)")
#pragma option_override (fname, "opt(size,yes)") |
opt(size,no) | -qnocompact | #pragma option_override (fname, "opt(size,no)") |
opt(strict) | -qstrict | #pragma option_override (fname, "opt(strict)") |
opt(strict,no) | -qnostrict | #pragma option_override (fname, "opt(strict,no)") |
デフォルトでは、コマンド行に指定した最適化オプションは、ソース・プログラム全体に適用されます。 ただし、最適化がオンになっている場合だけ、特定タイプのランタイム・エラーが発生することがあります。このプラグマを使用してプログラム内の特定の関数 (fname) のコマンド行の最適化設定をオーバーライドすることができます。このことは、これらの関数のプログラミング・エラーを識別して訂正するのに役立つ場合があります。
関数単位の最適化は、 コンパイル・オプションによって最適化がすでに使用可能になっている場合にのみ有効です。 コンパイル中のプログラムの残りの部分に適用されるよりも低いレベルで関数ごとの最適化を要求することができます。 このプラグマを介してオプションを選択すると、選択された特定の最適化オプションにのみ有効になり、関連オプションの暗黙設定には影響ありません。
オプションを指定するときは、二重引用符で囲むため、 マクロ展開には影響されません。 引用符で囲んで指定したオプションは、 ビルド・オプションの構文に従わなければなりません。
このプラグマは多重定義のメンバー関数には使用できません。
このプラグマは、コンパイル単位に定義された関数にのみ影響し、例えば以下のように、コンパイル単位のどこにでも指定することができます。
関連情報