Funzioni nakedNaked Functions

Sezione specifica MicrosoftMicrosoft Specific

L'attributo della classe di archiviazione naked è un'estensione specifica di Microsoft per il linguaggio C.The naked storage-class attribute is a Microsoft-specific extension to the C language. Per le funzioni dichiarate con l'attributo della classe di archiviazione naked, il compilatore genera codice senza codice di epilogo e di prologo.For functions declared with the naked storage-class attribute, the compiler generates code without prolog and epilog code. È possibile utilizzare questa funzionalità per scrivere le proprie sequenze di codice di epilogo o di prologo utilizzando codice assembler inline.You can use this feature to write your own prolog/epilog code sequences using inline assembler code. Le funzioni con attributo naked sono particolarmente utili nella scrittura di driver di dispositivi virtuali.Naked functions are particularly useful in writing virtual device drivers.

Poiché l'attributo naked è pertinente solo per la definizione di una funzione e non è un modificatore di tipo, le funzioni naked usano la sintassi degli attributi estesa, descritta in Attributi di classi di archiviazione estesi.Because the naked attribute is only relevant to the definition of a function and is not a type modifier, naked functions use the extended attribute syntax, described in Extended Storage-Class Attributes.

Nell'esempio seguente viene definita una funzione con l'attributo naked:The following example defines a function with the naked attribute:

__declspec( naked ) int func( formal_parameters )  
{  
   /* Function body */  
}  

Oppure, in alternativa:Or, alternatively:

#define Naked   __declspec( naked )  

Naked int func( formal_parameters )  
{  
   /* Function body */  
}  

L'attributo naked influisce solo sulla natura della generazione di codice del compilatore per le sequenze di prologo ed epilogo della funzione.The naked attribute affects only the nature of the compiler's code generation for the function's prolog and epilog sequences. Tale attributo non influisce sul codice generato per chiamare tali funzioni.It does not affect the code that is generated for calling such functions. Di conseguenza, l'attributo naked non è considerato come parte del tipo di funzione e i puntatori alla funzione non possono avere l'attributo naked.Thus, the naked attribute is not considered part of the function's type, and function pointers cannot have the naked attribute. Inoltre, l'attributo naked non può essere applicato a una definizione dei dati.Furthermore, the naked attribute cannot be applied to a data definition. Il codice seguente genera ad esempio errori:For example, the following code generates errors:

__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.The naked attribute is relevant only to the definition of the function and cannot be specified in the function's prototype. La dichiarazione seguente genera un errore del compilatore:The following declaration generates a compiler error:

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

Fine sezione specifica MicrosoftEND Microsoft Specific

Vedere ancheSee Also

Definizioni di funzioni CC Function Definitions