intrinsic
pragma
Určuje, že volání funkcí zadaných v pragmaseznamu argumentů jsou vnitřní.
Syntaxe
#pragma intrinsic(
function_1 [,
function_2 ... ])
Poznámky
Říká intrinsic
pragma kompilátoru, že funkce má známé chování. 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. Jakmile se zobrazí intrinsic
pragma , projeví se v první definici funkce obsahující zadanou vnitřní funkci. Efekt pokračuje na konec zdrojového souboru nebo na vzhled určující stejnou function
pragma vnitřní funkci. Lze intrinsic
pragma použít pouze mimo definici funkce na globální úrovni.
Následující funkce mají vnitřní formuláře a vnitřní formuláře se použijí při zadání /Oi
:
Programy, které používají vnitřní funkce, jsou rychlejší, protože nemají režii volání funkcí. Mohou však být větší kvůli dalšímu vygenerovanému kódu.
Příklad specifický pro x86
Tyto _disable
a _enable
vnitřní objekty generují pokyny režimu jádra k zakázání nebo povolení přerušení a můžou být užitečné v ovladačích režimu jádra.
Zkompilujte následující kód z příkazového řádku a podívejte sample.asm
se, že se změní na rozhraní příkazového řádku cl -c -FAs sample.c
x86 a 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() {
}
Vnitřní funkce s plovoucí desetinou čárkou
Tyto funkce s plovoucí desetinou čárkou nemají skutečné vnitřní formuláře. Místo toho mají verze, které předávají argumenty přímo čipu s plovoucí desetinou čárkou, místo aby je nasdílely do zásobníku:
Tyto funkce s plovoucí desetinou čárkou mají při zadávání /Oi
/fp:fast
a (nebo libovolnou možnost, která zahrnuje /Oi
: /Ox
, /O1
a /O2
):
Můžete použít /fp:strict
nebo /Za
přepsat generování skutečných vnitřních možností s plovoucí desetinou čárkou. 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 #pragma function
a příklad povolení a zakázání vnitřních objektů bloku zdrojového textu
Viz také
Pragma direktivy a __pragma
_Pragma
klíčová slova
Vnitřní funkce kompilátoru