#pragma option_override ディレクティブにより、特定の関数に対する代替最適化オプションを指定します。
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) に対するコマンド行最適化設定をオーバーライドします。これは、これらの関数のプログラミング・エラーを識別したり修正したりする場合に役立ちます。
関数単位の最適化は、コンパイル・オプションによって最適化がすでに使用可能になっている場合にのみ有効です。コンパイル中の残りのプログラムに適用されたレベルより下のレベルでの、関数単位の最適化を要求することができます。このプラグマを介してオプションを選択すると、選択された特定の最適化オプションにのみ有効になり、関連オプションの暗黙設定には無効です。
オプションを指定するときは、二重引用符で囲むため、マクロ展開には影響されません。引用符で囲んで指定したオプションは、ビルド・オプションの構文に従わなければなりません。
このプラグマは、多重定義されたメンバー関数とともに使用することはできません。
このプラグマは、コンパイル単位で定義された関数にのみ有効で、例えば、以下のように、コンパイル単位の任意の場所に置くことができます。