共用方式為


intrinsic

指定的內建的 pragma 引數清單中所指定的函式呼叫。

#pragma intrinsic( function1 [, function2, ...] )

備註

內建 pragma 告訴編譯器函式有已知的行為。 編譯器可能會呼叫函式,並不取代函式呼叫內嵌的指示,如果將會導致較佳的效能。

使用內建的表單程式庫函式如下所示。 一次內建 pragma,在第一個包含指定的內建函式的函式定義,就會生效。 原始程式檔的結尾或外觀的效果會繼續函式 pragma 指定相同的內建函式。 內建函式定義之外的只用於 pragma — 在全域層級。

下列函式有內建的表單,且您指定時使用內建形式 /Oi

_ 停用

_outp

fabs

strcmp

_ 啟用

_outpw

實驗室

strcpy

_inp

_rotl

memcmp

strlen

_inpw

_rotr

memcpy

 

_lrotl

_strset

memset

 

_lrotr

abs

strcat

 

使用內建函式的程式會更快,因為它們沒有函式呼叫的額外負荷,但可能產生的額外程式碼受限於更大。

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。 相反地,它們有引數直接傳遞給浮點晶片而不是將它們推入程式堆疊的版本:

acos

cosh

pow

tanh

asin

fmod

sinh

 

以下所列浮點函式有,則為 true 的內建表單,當您指定 /Oi/Og,以及 /fp:fast (或任何一個選項,其中包括 /Og: /Ox/O1,和 /O2):

atan

exp

log10

sqrt

atan2

log

sin

tan

cos

 

 

 

您可以使用 /fp: 嚴格/Za 來抑制產生真正內建浮點的選項。 在這種情況下,函式會被建立為直接傳遞引數給浮點晶片,而不是將它們推入程式堆疊的程式庫常式。

請參閱 # pragma 函式如資訊,以及如何啟用或停用內建函式的原始程式文字區塊的範例。

請參閱

參考

Pragma 指示詞 」 和 「 __Pragma 關鍵字

編譯器內建函式