Naked Funzioni
Specifici di Microsoft
naked l'attributo di classe di archiviazione è un'estensione Microsoft-specifica il linguaggio C.per le funzioni dichiarate con naked l'attributo di classe di archiviazione, 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.
Poiché naked l'attributo è rilevante solo alla definizione di funzione e non è un modificatore di tipo, funzioni naked utilizza la sintassi degli attributi estesa, descritta in Attributi estesi di classe di archiviazione.
Nell'esempio seguente viene definita una funzione con naked attributo:
__declspec( naked ) int func( formal_parameters )
{
/* Function body */
}
o, in alternativa:
#define Naked __declspec( naked )
Naked int func( formal_parameters )
{
/* Function body */
}
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, il codice seguente genera gli errori:
__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.La dichiarazione seguente genera un errore di compilazione:
__declspec( naked ) int func(); /* Error--naked attribute not */
/* permitted on function declarations. */ \
Microsoft FINALE specifico