intrinsic
pragma
Określa, że wywołania funkcji określonych na pragmaliście argumentów są wewnętrzne.
Składnia
#pragma intrinsic(
function_1 [,
function_2 ... ])
Uwagi
Polecenie intrinsic
pragma informuje kompilator, że funkcja ma znane zachowanie. Kompilator może wywołać funkcję i nie zastąpić wywołania funkcji instrukcjami wbudowanymi, jeśli spowoduje to lepszą wydajność.
Poniżej wymieniono funkcje biblioteki z formularzami wewnętrznymi. Gdy element intrinsic
pragma jest widoczny, ma zastosowanie w pierwszej definicji funkcji zawierającej określoną funkcję wewnętrzną. Efekt jest kontynuowany na końcu pliku źródłowego lub na wygląd funkcji wewnętrznej określającej tę samą funkcję wewnętrzną function
pragma . Można intrinsic
pragma jej używać tylko poza definicją funkcji na poziomie globalnym.
Następujące funkcje mają formularze wewnętrzne, a formularze wewnętrzne są używane podczas określania elementu /Oi
:
Programy korzystające z funkcji wewnętrznych są szybsze, ponieważ nie mają obciążenia związanego z wywołaniami funkcji. Mogą one być jednak większe z powodu wygenerowanego dodatkowego kodu.
Przykład specyficzny dla architektury x86
Funkcje _disable
wewnętrzne i _enable
generują instrukcje trybu jądra w celu wyłączenia lub włączenia przerwań i mogą być przydatne w sterownikach trybu jądra.
Skompiluj następujący kod z wiersza cl -c -FAs sample.c
polecenia i przyjrzyj sample.asm
się temu, aby zobaczyć, że zamieniają się w interfejs wiersza polecenia x86 i interfejs 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() {
}
Wewnętrzne funkcje zmiennoprzecinkowe
Te funkcje zmiennoprzecinkowe nie mają prawdziwych formularzy wewnętrznych. Zamiast tego mają wersje, które przekazują argumenty bezpośrednio do mikroukładu zmiennoprzecinkowego, zamiast wypychać je na stos:
Te funkcje zmiennoprzecinkowe mają prawdziwe formy wewnętrzne podczas określania /Oi
wartości i /fp:fast
(lub dowolnej opcji, która obejmuje /Oi
: /Ox
, /O1
i /O2
):
Można użyć /fp:strict
funkcji lub /Za
zastąpić generowanie rzeczywistych opcji zmiennoprzecinkowych true. W takim przypadku funkcje są generowane jako procedury bibliotek, które przekazują argumenty bezpośrednio do mikroukładu zmiennoprzecinkowego, zamiast wypychać je do stosu programu.
Zobacz #pragma function
, aby uzyskać informacje i przykład włączania i wyłączania funkcji wewnętrznych dla bloku tekstu źródłowego.
Zobacz też
Pragmadyrektywy i __pragma
słowa kluczowe i _Pragma
Funkcje wewnętrzne kompilatora