naked (C++)
Sezione specifica Microsoft
Per le funzioni dichiarate con l'attributo naked
, il compilatore genera codice senza codice prologo ed epilogo. È possibile utilizzare questa funzionalità per scrivere le proprie sequenze di codice di epilogo o di prologo utilizzando codice assembler inline. Le funzioni con attributo naked sono particolarmente utili nella scrittura di driver di dispositivi virtuali. Si noti che l'attributo naked
è valido solo in x86 e ARM e non è disponibile in x64.
Sintassi
__declspec(naked) declarator
Osservazioni:
Poiché l'attributo naked
è rilevante solo per la definizione di una funzione e non è un modificatore di tipo, le funzioni naked devono usare la sintassi degli attributi estesi e la parola chiave __declspec .
Il compilatore non può generare una funzione inline per una funzione contrassegnata con l'attributo naked, anche se la funzione è contrassegnata anche con la parola chiave __forceinline .
Il compilatore genera un errore se l'attributo naked
viene applicato a qualsiasi elemento diverso dalla definizione di un metodo non membro.
Esempi
Questo codice definisce una funzione con l'attributo naked
:
__declspec( naked ) int func( formal_parameters ) {}
In alternativa, in alternativa:
#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}
L'attributo naked
influisce solo sulla natura della generazione di codice del compilatore per le sequenze di prologo ed epilogo della funzione. Tale attributo non influisce sul codice generato per chiamare tali funzioni. Di conseguenza, l'attributo naked
non è considerato come parte del tipo di funzione e i puntatori alla funzione non possono avere l'attributo naked
. Inoltre, l'attributo naked
non può essere applicato a una definizione dei dati. Ad esempio, questo esempio di codice genera un errore:
__declspec( naked ) int i;
// Error--naked attribute not permitted on data declarations.
L'attributo naked
è rilevante solo per la definizione della funzione e non può essere specificato nel prototipo della funzione. Ad esempio, questa dichiarazione genera un errore del compilatore:
__declspec( naked ) int func(); // Error--naked attribute not permitted on function declarations
Fine sezione specifica Microsoft
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per