Sdílet prostřednictvím


– vnitřní funkce

Určuje, že volání funkcí zadaných v seznamu argumentů direktivy pragma jsou vnitřní.

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

Poznámky

Direktiva pragma intrinsic kompilátoru oznamuje, že chování funkce je známo. Kompilátor může funkci zavolat a nenahradit volání vloženými instrukcemi, pokud tím bude zvýšen výkon.

Funkce knihoven s vnitřními formami jsou uvedeny níže.Po nalezení direktivy pragma intrinsic se její účinek projeví v první definici funkce obsahující zadanou vnitřní funkci.Účinek trvá do konce zdrojového souboru nebo do výskytu direktivy pragma function zadávající stejnou vnitřní funkci.Direktivu pragma intrinsic lze použít pouze vně definice funkce na globální úrovni.

Následující funkce mají vnitřní formy, které jsou použity při zadání možnosti /Oi:

_disable

_outp

fabs

strcmp

_enable

_outpw

labs

strcpy

_inp

_rotl

memcmp

strlen

_inpw

_rotr

memcpy

 

_lrotl

_strset

memset

 

_lrotr

abs

strcat

 

Programu používající vnitřní funkce jsou rychlejší, protože neobsahují režii volání funkcí, mohou však být větší kvůli většího množství vygenerovaného kódu.

Informace specifické pro architekturu x86

Vnitřní funkce _disable a _enable zakazují nebo povolují přerušení generováním instrukcí režimu jádra a mohou být užitečné v ovladačích tohoto režimu.

Příklad

Zkompilujte následující kód z příkazového řádku příkazem "cl -c -FAs sample.c" a prohlédněte si soubor sample.asm, v němž lze vidět, že instrukce byly převedeny do instrukcí CLI a STI architektury x86.

// 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() {
}

Konec informací specifických pro architekturu x86

Funkce s plovoucí desetinnou čárkou uvedené níže nemají skutečné vnitřní formy.Namísto nich mají verze, které argumenty předávají přímo do čipu plovoucí desetinné čárky místo jejich ukládání do zásobníku programu:

acos

cosh

pow

tanh

asin

fmod

sinh

 

Funkce s plovoucí desetinnou čárkou uvedené níže mají skutečné vnitřní formy, je-li zadána možnost /Oi, /Og a /fp:fast (nebo jakákoli možnost obsahující možnost /Og: /Ox, /O1 a /O2):

atan

exp

log10

sqrt

atan2

log

sin

tan

cos

 

 

 

Chcete-li přepsat generování možností skutečně vnitřních plovoucích desetinných čárek, lze použít možnosti /fp:strict nebo /Za.V tomto případě jsou funkce generovány jako rutiny knihoven, které předávají argumenty přímo do čipu plovoucí desetinné čárky namísto jejich ukládání do zásobníku programu.

Informace a příklad o tom, jak povolit nebo zakázat vnitřní funkce pro blok zdrojového textu, naleznete v tématu # pragma function.

Viz také

Referenční dokumentace

Direktivy Pragma a klíčové slovo __Pragma

Vnitřní funkce kompilátoru