Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Microsoft-spezifisch
Die folgenden Regeln und Einschränkungen gelten für nackte Funktionen:
Die return-Anweisung ist nicht zulässig.
Die strukturierte Ausnahmebehandlung und C++-Ausnahmebehandlung die Konstrukte behandeln, sind nicht zulässig, da sie über den Stapelrahmen selbst entladen werden muss.
Aus demselben Grund wird jedes Formular von setjmp verhindert.
Verwendung der _alloca-Funktion wird verhindert.
Um sicherzustellen, dass kein Initialisierungscode für lokale Variablen vor der vorläufige sequence, werden nicht initialisierte lokale Variablen wird im Gültigkeitsbereich der Funktion zulässig.Insbesondere wird die Deklaration von C++-Objekten nicht im Gültigkeitsbereich der Funktion zulässig.Es gibt jedoch möglicherweise initialisierte Daten in einem geschachtelten Bereich.
Framezeiger, die Optimierung (die /Oy-), aber nicht empfohlen wird, wird automatisch für eine nackte Funktion unterdrückt.
C++-Klassenobjekte können Sie gültigkeitsbereich lexikalischen Funktion nicht deklarieren.Sie können jedoch Objekte in einem geschachtelten - Blocks deklarieren.
Das naked-Schlüsselwort wird beim Kompilieren mit /clrignoriert.
Eine nackte Funktionen __fastcall wenn es einen Verweis im C/C++-Code auf eines der Argumente Register vorläufige vorhanden sind, sollte der Code die Werte in den Stapel des Registers Speicherorts für diese Variable speichern.Beispiele:
// nkdfastcl.cpp
// compile with: /c
// processor: x86
__declspec(naked) int __fastcall power(int i, int j) {
// calculates i^j, assumes that j >= 0
// prolog
__asm {
push ebp
mov ebp, esp
sub esp, __LOCAL_SIZE
// store ECX and EDX into stack locations allocated for i and j
mov i, ecx
mov j, edx
}
{
int k = 1; // return value
while (j-- > 0)
k *= i;
__asm {
mov eax, k
};
}
// epilog
__asm {
mov esp, ebp
pop ebp
ret
}
}