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