Udostępnij za pośrednictwem


intrinsic

Określa, że wywołania funkcji określonych na liście argumentów pragma są wewnętrzne.

#pragma intrinsic( function1 [, function2, ...] )

Uwagi

Wewnętrzny pragma informuje kompilator znane zachowanie funkcji.Kompilator może wywołać funkcję i nie zastąpić wywołanie funkcji wbudowanej instrukcje, jeżeli powstanie lepszą wydajność.

Poniżej wymieniono funkcje biblioteki formularzy wewnętrzne.Po wewnętrzny pragma jest widoczne, jej wejścia w życie w pierwszym definicji funkcji, zawierające funkcję wewnętrzne.Efekt jest kontynuowane do końca pliku źródłowego lub wygląd funkcji pragma określający tę samą funkcję wewnętrzne.Wewnętrzny pragma mogą być używane tylko poza definicji funkcji — na poziomie globalnym.

Następujące funkcje mają wewnętrzne formularze i formularze wewnętrzne są używane podczas określania /Oi:

_disable

_outp

fabs

strcmp

_Aktywny

_outpw

Labs

strcpy

_inp

_rotl

memcmp

funkcji strlen

_inpw

_rotr

memcpy

 

_lrotl

_strset

memset

 

_lrotr

ABS

strcat

 

Programy używające funkcji wewnętrzne są szybciej, ponieważ nie mają dodatkowe obciążenie związane z wywołań funkcji, ale mogą być większe ze względu na dodatkowy kod generowany.

x 86 szczególne

Intrinsics _disable i _Aktywny generowania instrukcji trybu jądra, aby włączyć/wyłączyć przerwań i może być przydatne w sterowniki trybu jądra.

Przykład

Skompiluj następujący kod w wierszu polecenia z "cl - c-FAs sample.c" i przyjrzyj się sample.asm, aby zobaczyć ich przekształcić x 86 instrukcje CLI i 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() {
}

Szczególne koniec x 86

Zmiennoprzecinkowe funkcje wymienione poniżej nie true wewnętrzne formularzy.Zamiast tego mają wersje, w których argument jest przekazywany bezpośrednio do chip zmiennoprzecinkowych zamiast naciskania ich na stosie programu:

ACOS

COSH

Pow

TANH

ASIN

fmod

SINH

 

Zmiennoprzecinkowe funkcje wymienione poniżej mają true wewnętrzne formularzy podczas określania /Oi, /Og, i /fp:fast (lub dowolną opcję, która zawiera /Og: /Ox, /O1i /O2):

ATAN

EXP

LOG10

SQRT

ATAN2

Dziennik

SIN

tan

COS

 

 

 

Można użyć /ol: ścisłe lub /Za do zastępowania generacji true wewnętrzne opcje zmiennoprzecinkowych.W takim przypadku funkcje są generowane jako biblioteka procedur, które będą przekazywać argumenty bezpośrednio do zmiennoprzecinkowych chip zamiast naciskania ich na stosie programu.

Zobacz # pragma, funkcja informacji i przykład jak do włączania i wyłączania intrinsics dla bloku tekstu źródłowego.

Zobacz też

Informacje

Dyrektywy pragma i __Pragma słowa kluczowego

Intrinsics kompilatora