Freigeben über


naked (C++)

Microsoft-spezifisch

Für die Funktionen, mit dem naked-Attribut deklariert werden, generiert der Compiler Code ohne Einleitungs- und Epilogcode.Sie können diese Funktion verwenden, um zu schreiben, Einleitungs-/Epilogcode sequenzen Inlineassembler mithilfe des Codes verfügen.Nackte Funktionen sind in den Schreibvorgang virtuellen gerätetreibern hilfreich.Beachten Sie, dass das Attribut nur auf x86- naked gültig ist und ist nicht für x64 oder Itaniumverfügbar.

__declspec(naked) declarator

Hinweise

Da das naked-Attribut auf die Definition einer Funktion nur relevant sind und kein Typ modifizierer ist, müssen nackte Funktionen Syntax des erweiterten Attributs und das __declspec-Schlüsselwort verwenden.

Der Compiler kann eine Inlinefunktion für eine Funktion generieren, die dem naked-Attribut gekennzeichnet ist, selbst wenn die Funktion auch mit dem __forceinline-Schlüsselwort gekennzeichnet ist.

Der Compiler gibt einen Fehler aus, wenn das naked-Attribut auf einen anderen Wert als die Definition einer Nichtmitglieds Methode angewendet wird.

Beispiele

Dieser Code definiert eine Funktion mit dem naked-Attribut:

__declspec( naked ) int func( formal_parameters ) {}

Oder abwechselnd:

#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}

Das naked-Attribut wirkt sich nur auf die Art der Codegenerierung des Compilers für die Einleitungs- und Epilog sequenzen der Funktion.Er wirkt sich nicht auf den Code, der zum Aufrufen solcher Funktionen generiert wird.Daher gilt das naked-Attribut nicht als Teil des Typs der Funktion, und Funktionszeigern können das naked-Attribut enthalten.Darüber hinaus kann das naked-Attribut keiner Datendefinition angewendet werden.Beispielsweise generiert dieses Beispiel einen Fehler:

__declspec( naked ) int i;       // Error--naked attribute not
                                 // permitted on data declarations.

Das Attribut ist nur naked zur Definition der Funktion relevant und kann nicht im Prototyp der Funktion angegeben werden.Beispielsweise generiert diese Deklaration einen Compilerfehler:

__declspec( naked ) int func();  // Error--naked attribute not 
                                 // permitted on function declarations

Microsoft ENDES bestimmten

Siehe auch

Referenz

__declspec

C++-Schlüsselwörter

Nackte Funktionsaufrufe