– 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:
|
|||
|
|||
|
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:
|
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):
|
|
|
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.