Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

naked (C++)

Específicos de Microsoft

Para las funciones declaradas con el atributo naked, el compilador genera código sin código de prólogo y epílogo. Puede utilizar esta característica para escribir sus propias secuencias de código de prólogo/epílogo mediante código del ensamblador alineado. Las funciones naked son especialmente útiles al escribir controladores de dispositivos virtuales. Tenga en cuenta que el atributo naked solo es válido en x86 y ARM, y no está disponible en x64.

__declspec(naked) declarator

Puesto que el atributo naked solo es pertinente para la definición de una función y no es un modificador de tipo, las funciones naked deben utilizar la sintaxis de atributo extendido y la palabra clave __declspec.

El compilador no puede generar una función insertada para una función marcada con el atributo naked, incluso aunque la función esté marcada también con la palabra clave __forceinline.

El compilador emite un error si el atributo naked se aplica a algo distinto de la definición de un método que no es miembro.

Ejemplos

En este código se define una función con el atributo naked:

__declspec( naked ) int func( formal_parameters ) {}

O bien, como alternativa:

#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}

El atributo naked solo afecta a la naturaleza de la generación de código del compilador para las secuencias de prólogo y epílogo de la función. No afecta al código que se genera para llamar a esas funciones. Por tanto, el atributo naked no se considera parte del tipo de la función y los punteros a función no pueden tener el atributo naked. Además, el atributo naked no se puede aplicar a una definición de datos. Por ejemplo, en este ejemplo de código se genera un error:

__declspec( naked ) int i;       // Error--naked attribute not
                                 // permitted on data declarations.

El atributo naked solo es pertinente para la definición de la función y no se puede especificar en el prototipo de la función. Por ejemplo, esta declaración genera un error del compilador:

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

Específicos de Microsoft: END

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft