Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Específico da Microsoft
O naked atributo storage-class é uma extensão específica da Microsoft para a linguagem C. Para funções declaradas com o naked atributo storage-class, o compilador gera código sem código prolog e epilog. Você pode usar esse recurso para escrever suas próprias sequências de código prolog/epilog usando código assembler embutido. Naked funções são particularmente úteis na escrita de drivers de dispositivo virtual.
Como o naked atributo só é relevante para a definição de uma função e não é um modificador de tipo, as funções nuas usam a sintaxe de atributo estendido, descrita em Extended Storage-Class Attributes.
O exemplo a seguir define uma função com o naked atributo:
__declspec( naked ) int func( formal_parameters )
{
/* Function body */
}
Ou, alternativamente:
#define Naked __declspec( naked )
Naked int func( formal_parameters )
{
/* Function body */
}
O naked atributo afeta apenas a natureza da geração de código do compilador para as sequências prolog e epilog da função. Isso não afeta o código que é gerado para chamar tais funções. Assim, o naked atributo não é considerado parte do tipo da função, e os ponteiros de função não podem ter o naked atributo. Além disso, o naked atributo não pode ser aplicado a uma definição de dados. Por exemplo, o código a seguir gera erros:
__declspec( naked ) int i; /* Error--naked attribute not */
/* permitted on data declarations. */
O naked atributo é relevante apenas para a definição da função e não pode ser especificado no protótipo da função. A seguinte declaração gera um erro de compilador:
__declspec( naked ) int func(); /* Error--naked attribute not */
/* permitted on function declarations. */ \
END Específico da Microsoft