intrinsic
指定的內建的 pragma 引數清單中所指定的函式呼叫。
#pragma intrinsic( function1 [, function2, ...] )
備註
內建 pragma 告訴編譯器函式有已知的行為。 編譯器可能會呼叫函式,並不取代函式呼叫內嵌的指示,如果將會導致較佳的效能。
使用內建的表單程式庫函式如下所示。 一次內建 pragma,在第一個包含指定的內建函式的函式定義,就會生效。 原始程式檔的結尾或外觀的效果會繼續函式 pragma 指定相同的內建函式。 內建函式定義之外的只用於 pragma — 在全域層級。
下列函式有內建的表單,且您指定時使用內建形式 /Oi:
|
|||
|
|||
|
使用內建函式的程式會更快,因為它們沒有函式呼叫的額外負荷,但可能產生的額外程式碼受限於更大。
x86 專屬資訊
_ 停用和 _ 啟用內建的函式會產生核心模式的指示,以停用/啟用插斷,且可能適用於核心模式驅動程式。
範例
編譯下列程式碼,從命令列,以"cl-c-FAs sample.c 」,然後查看 sample.asm 以查看它們變成 x86 CLI 和 STI 的指示:
// 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 特定
以下所列浮點函式並沒有內建的形式,則為 true。 相反地,它們有引數直接傳遞給浮點晶片而不是將它們推入程式堆疊的版本:
|
以下所列浮點函式有,則為 true 的內建表單,當您指定 /Oi, /Og,以及 /fp:fast (或任何一個選項,其中包括 /Og: /Ox, /O1,和 /O2):
|
|
|
您可以使用 /fp: 嚴格 或 /Za 來抑制產生真正內建浮點的選項。 在這種情況下,函式會被建立為直接傳遞引數給浮點晶片,而不是將它們推入程式堆疊的程式庫常式。
請參閱 # pragma 函式如資訊,以及如何啟用或停用內建函式的原始程式文字區塊的範例。