Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Específicos de Microsoft
El atributo de clase de almacenamiento de naked es una extensión Microsoft-específica el lenguaje C.Para las funciones declaradas con el atributo de clase de almacenamiento de naked , el compilador genera código sin código de prólogo y de epílogo.Puede utilizar esta característica para escribir dispone de secuencias de código de prólogo/epilog mediante código ensamblador en línea.Las funciones descubiertas son especialmente útiles en controladores de dispositivo virtual de escritura.
Dado que el atributo de naked solo es pertinente a la definición de una función y no es un modificador de tipo, las funciones descubiertas utilizan la sintaxis de atributo extendido, descrita en Atributos extendidos de clase de almacenamiento.
El ejemplo siguiente se define una función con el atributo de naked :
__declspec( naked ) int func( formal_parameters )
{
/* Function body */
}
O, o bien:
#define Naked __declspec( naked )
Naked int func( formal_parameters )
{
/* Function body */
}
El atributo de naked afecta sólo a la naturaleza de la generación de código del compilador para las secuencias de prólogo y de epílogo de la función.No afecta al código que se genera para llamar a estas funciones.Así, el atributo de naked no se considera parte del tipo de función, y los punteros a función no pueden tener el atributo de naked .además, el atributo de naked no se puede aplicar a una definición de datos.por ejemplo, el código siguiente genera errores:
__declspec( naked ) int i; /* Error--naked attribute not */
/* permitted on data declarations. */
El atributo de naked sólo es relevante a la definición de la función y no se puede especificar en el prototipo de función.La declaración siguiente genera un error del compilador:
__declspec( naked ) int func(); /* Error--naked attribute not */
/* permitted on function declarations. */ \
Específico de Microsoft de FINAL