Sdílet prostřednictvím


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á intrinsicpragma 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í intrinsicpragma , 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 functionpragma vnitřní funkci. Lze intrinsicpragma 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, /O1a /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é

Direktivy Pragma a __pragma _Pragma klíčová slova
Vnitřní funkce kompilátoru