Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
'função' : uma função 'nua' não pode conter objetos que exigiriam desenrolamento se ocorresse uma exceção C++
Observações
O compilador não pôde executar o desenrolamento de pilha numa função naked que levantou uma exceção porque um objeto temporário foi criado na função e o mecanismo de tratamento de exceções C++ (/EHsc) foi especificado.
Para resolver esse erro, siga pelo menos um destes procedimentos:
Não compile com /EHsc.
Não marque a função como
naked.Não crie um objeto temporário na função.
Se uma função cria um objeto temporário na pilha, se a função lança uma exceção e se o tratamento de exceções C++ está habilitado, o compilador limpará a pilha se uma exceção for lançada.
Quando uma exceção é lançada, o código gerado pelo compilador, chamado prolog e epilog, que não estão presentes numa função naked, é executado durante a execução de uma função.
Example
O exemplo a seguir gera C3068:
// C3068.cpp
// compile with: /EHsc
// processor: x86
class A {
public:
A(){}
~A(){}
};
void b(A){}
__declspec(naked) void c() {
b(A()); // C3068
}