Partilhar via


Naked Funções

Específicos do Microsoft

O naked o atributo de classe de armazenamento é uma extensão de específicas da Microsoft para a linguagem C.Para funções declaradas com a naked atributo de classe de armazenamento, o compilador gera código sem código de prólogo e epilog.Você pode usar esse recurso para gravar as seqüências de código de prólogo/epilog usando o código de montador embutido.Funções nua são particularmente úteis na escrita de drivers de dispositivo virtual.

Porque o naked atributo só é relevante para a definição de uma função e não é um modificador de tipo, funções nua usam a sintaxe de atributo estendido, descrita em Atributos estendidos de classe de armazenamento.

O exemplo a seguir define uma função com o naked atributo:

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

Ou, como alternativa:

#define Naked   __declspec( naked )

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

O naked atributo afeta somente a natureza da geração de código do compilador para seqüências de prólogo e epilog da função.Ele não afeta o código que é gerado para chamar funções.Assim, o naked atributo não é considerado parte do tipo da função e ponteiros de função não podem ter a 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 declaração a seguir gera um erro do compilador:

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

Específicos do Microsoft final

Consulte também

Referência

Definições de função c