Freigeben über


intrinsic

Gibt an, dass Aufrufe der Funktionen, die in der Argumentliste des Pragmas angegebene systemeigene sind.

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

Hinweise

Das systemintern Pragma weist den Compiler an, dass eine Funktion Verhalten bekannt ist.Der Compiler die Funktion aufrufen und ersetzt den Funktionsaufruf von Inline Anweisungen, wenn er eine höhere Leistung führt.

Die Bibliotheksfunktionen mit systeminternen Formularen sind unten aufgeführt.Sobald ein systemintern Pragma angezeigt wird, tritt er auf der ersten Funktionsdefinition in Kraft, die eine bestimmte systeminterne Funktion enthält.Der Effekt wird am Ende der Quelldatei oder zur Darstellung eines Funktion Pragmas, die die gleiche systeminterne Funktion angibt.Das systemintern Pragma kann nur außerhalb einer Funktionsdefinition — in der globalen Ebene verwendet werden.

Die folgenden Funktionen sind systeminterne Formulare und die systeminternen Formulare werden verwendet, wenn Sie /Oiangeben:

_disable

_outp

fabs

strcmp

_enable

_outpw

Labe

strcpy

_inp

_rotl

memcmp

strlen

_inpw

_rotr

memcpy

 

_lrotl

_strset

memset

 

_lrotr

abs

strcat

 

Programme, die systeminterne Funktionen verwendet werden, sind schneller, da sie nicht den Mehraufwand von Funktionsaufrufen sind, haben jedoch möglicherweise aufgrund des generierten zusätzlichen Codes größer.

x86-spezifisch

Die _disable und _enable systeminternen Komponenten generieren, Kernelmodus Anweisungen deaktivieren/aktivieren Timeouts und können in den Kernelmodus treibern hilfreich sein.

Beispiel

Kompilieren Sie den folgenden Code in der Befehlszeile mit „Cl - c“ - FAs sample.c und überprüfen Sie sample.asm, um zu überprüfen, ob sie auf x86 WTI und CLI-Arrays Anweisungen ausführen:

// 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() {
}

bestimmten Endes x86

Die Float Funktionen, die im Folgenden aufgeführt werden, besitzen keine echte systeminterne Formularen.Stattdessen sind, haben sie direkt auf die Argumente, Float Chip übergeben, anstatt sie im Programm stapel drücken:

acos

cosh

Kriegsgefangen

tanh

asin

fmod

sinh

 

Die Float Funktionen, die im Folgenden aufgeführt werden, haben eine echte systeminterne Formulare, wenn Sie /Oi, /Ogund /fp: Schnelles angeben (oder eine Option, die /Og enthält: /Ox, /O1und /O2):

atan

exp

log10

sqrt

atan2

log

sin

tan

cos

 

 

 

Sie können /fp: Strict oder /Za verwenden, um die Generierung von wahren systeminternen von Optionen zu überschreiben.In diesem Fall werden die Funktionen als Bibliotheksfunktionen erzeugt, die die Argumente direkt an den Gleitkommachip übergeben, statt sie in den Programmstapel abzulegen.

Weitere Informationen finden Sie unter # Feature zum Pragma für Informationen und ein Beispiel für die Verwendung von systeminternen Komponenten für einen Block von Quelltext aktiviert.

Siehe auch

Referenz

Pragma-Direktiven und das __Pragma-Schlüsselwort

Systeminterne Funktionen des Compilers