intrinsic
プラグマの引数リストに指定された関数の呼び出しは主に指定します。
#pragma intrinsic( function1 [, function2, ...] )
解説
組み込み のプラグマは関数の動作を理解していることをコンパイラに指示します。コンパイラはより優れたパフォーマンスが向上する関数を呼び出し命令とインライン関数呼び出しが見つからない場合があります。
組み込み形式とライブラリ関数を示します。 組み込み のプラグマが発生した場合指定の組み込み関数を含む最初の関数定義に適用されます。その結果ソース ファイルの末尾または同じ組み込み関数を指定する 関数 のプラグマの外観に従います。 組み込み のプラグマはグローバル レベルで…関数定義の外部でのみ使用できます。
次の関数の組み込み形式があり/Oi を指定すると組み込み形式が使用されます :
|
|||
|
|||
|
組み込み関数を使用するプログラムは関数呼び出しのオーバーヘッドを追加持たなかったり生成されたコードが大規模な原因である可能性があるため高速です。
x86 固有の仕様→
_disable と _enable 組み込みでは無効なカーネル モードを有効または命令の割り込みを生成しカーネル モード ドライバーに役立つことができます。
使用例
次のコードを 「 CL - c) を使用してコマンド ラインからコンパイル FAS 」 sample.cx86 命令にCLI STI を切り替えることを確認するに sample.asm を参照 :
// pragma_directive_intrinsic.cpp
// processor: x86
#include <dos.h> // definitions for _disable, _enable
#pragma intrinsic(_disable)
#pragma intrinsic(_enable)
void f1(void) {
_disable();
// do some work here that should not be interrupted
_enable();
}
int main() {
}
← x86 固有の仕様
以下の浮動小数点関数に真の組み込み形式はありません。代わりにそれらに渡すバージョンがあります。プログラム スタックにプッシュではなく浮動小数点演算コプロセッサに引数を直接 :
|
/Oi/Og と /fp: 高速 指定すると以下に示す小数点関数に真の組み込み形式があります (または /Og などのオプション : /Oxおよび) /O1/O2:
|
|
|
真の組み込み形式の浮動小数点オプションの生成をオーバーライドするために /fp: 厳密 または /Za を使用できます。浮動小数点関数はライブラリ ルーチンとして生成されます。これらのライブラリ ルーチンでは、引数はプログラム スタックにプッシュされずに、数値演算コプロセッサに直接渡されます。
ソース テキストのブロックの組み込みを有効または無効にする方法の詳細と例については# プラグマの関数 を参照してください。