Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ż
dyrektywy Pragma oraz słowa kluczowe __pragma
i _Pragma
Funkcje wewnętrzne kompilatora