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
Für Funktionen, die mit dem naked Attribut deklariert wurden, generiert der Compiler Code ohne Prolog- und Epilogcode. Sie können diese Funktion verwenden, um eigene Prolog-/Epilogcodesequenzen mithilfe von Inlineassemblercode zu schreiben. Naked-Funktionen sind vor allem beim Schreiben von virtuellen Gerätetreibern hilfreich. Beachten Sie, dass das naked Attribut nur für x86 und ARM gültig ist und auf x64 nicht verfügbar ist.
Syntax
__declspec(naked) declarator
Hinweise
Da das naked Attribut nur für die Definition einer Funktion relevant ist und kein Typmodifizierer ist, müssen nackte Funktionen erweiterte Attributsyntax und das schlüsselwort __declspec verwenden.
Der Compiler kann keine Inlinefunktion für eine Funktion generieren, die mit dem nackten Attribut gekennzeichnet ist, auch wenn die Funktion auch mit dem Schlüsselwort __forceinline gekennzeichnet ist.
Der Compiler gibt einen Fehler aus, wenn das naked Attribut auf einen anderen Wert als die Definition einer Nicht-Member-Methode angewendet wird.
Beispiele
Dieser Code definiert eine Funktion mit dem naked Attribut:
__declspec( naked ) int func( formal_parameters ) {}
Oder auch:
#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}
Das naked-Attribut wirkt sich nur auf die Codegenerierung des Compilers für die Prolog- und Epilogsequenzen der Funktion aus. Es hat keine Auswirkungen auf den Code, der zum Aufrufen solcher Funktionen generiert wird. Daher gilt das naked-Attribut nicht als Teil des Typs der Funktion, und Funktionszeiger dürfen nicht das naked-Attribut enthalten. Darüber hinaus kann das naked-Attribut nicht auf eine Datendefinition angewendet werden. Beispielsweise wird mit diesem Codebeispiel ein Fehler generiert:
__declspec( naked ) int i;
// Error--naked attribute not permitted on data declarations.
Das naked-Attribut ist nur für die Funktionsdefinition relevant und kann nicht im Funktionsprototyp angegeben werden. Beispielsweise wird mit dieser Deklaration ein Compilerfehler generiert:
__declspec( naked ) int func(); // Error--naked attribute not permitted on function declarations
Ende Microsoft-spezifisch