naked (C++)
Specifici di Microsoft
per le funzioni dichiarate con naked l'attributo, il compilatore genera codice senza codice di epilogo e di prologo.È possibile utilizzare questa funzionalità per scrivere per contenere le sequenze di codice epilogo o di prologo utilizzando il codice assembler inline.Le funzioni naked sono particolarmente utili nella scrittura dei driver di periferica virtuali.si noti che naked l'attributo è valido solo su x86 e non è disponibile in x64 o Itanium.
__declspec(naked) declarator
Note
Poiché naked l'attributo è rilevante solo alla definizione di funzione e non è un modificatore di tipo, le funzioni naked devono utilizzare la sintassi degli attributi estesa e __declspec parola chiave.
Il compilatore non è in grado di generare una funzione inline per una funzione contrassegnata con l'attributo naked, anche se la funzione viene contrassegnata con __forceinline parola chiave.
Il compilatore genera un errore se naked l'attributo è applicato a diversa dalla definizione di un metodo non membro.
Esempi
questo codice definisce una funzione con naked attributo:
__declspec( naked ) int func( formal_parameters ) {}
O, in alternativa:
#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}
naked l'attributo influisce solo sulla natura di generazione del codice del compilatore per le sequenze di prologo e dell'epilogo della funzione.Non influisce sul codice che venga generato per chiamare tali funzioni.Pertanto, naked l'attributo non è considerato parte del tipo di funzione e i puntatori a funzione non possono avere naked attributo.Inoltre, naked l'attributo non può essere applicato a una definizione dei dati.Ad esempio, in questo esempio di codice riportato di seguito genera un errore:
__declspec( naked ) int i; // Error--naked attribute not
// permitted on data declarations.
naked l'attributo è rilevante solo alla definizione della funzione e non può essere specificato nel prototipo della funzione.Ad esempio, questa dichiarazione genera un errore di compilazione:
__declspec( naked ) int func(); // Error--naked attribute not
// permitted on function declarations
Microsoft FINALE specifico