naked (C++)
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 die __declspec Schlüsselwort (keyword) 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 __forceinline Schlüsselwort (keyword) 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
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für