Compartilhar via


naked (C++)

Específicos do Microsoft

Para funções declaradas com a naked atributo, 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.Observe que o naked atributo só é válido em x86 e não está disponível em x64 ou Itanium.

__declspec(naked) declarator

Comentários

Porque o naked atributo só é relevante para a definição de uma função e não é um modificador de tipo, funções nua devem usar a sintaxe de atributo estendido e o __declspec palavra-chave.

O compilador não pode gerar uma função embutida para uma função marcada com o atributo nua, mesmo que a função também é marcada com o __forceinline palavra-chave.

O compilador emitirá um erro se o naked atributo é aplicado a qualquer coisa diferente, por exemplo, a definição de um método não-membro.

Exemplos

Esse código define uma função com o naked atributo:

__declspec( naked ) int func( formal_parameters ) {}

Ou, como alternativa:

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

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 um erro:

__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.Por exemplo, essa declaração 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

__declspec

Palavras-chave C++

Chamadas de função nua