Partilhar via


Aviso do compilador (nível 1) C4382

lançando 'tipo' : um tipo com __clrcall destruidor ou construtor de cópia só pode ser capturado em /clr:pure module

Observações

A opção de compilador /clr:pure foi preterida no Visual Studio 2015 e não tem suporte no Visual Studio 2017.

Quando compilado com /clr (não /clr:pure), o tratamento de exceções espera que as funções de membro em um tipo nativo sejam __cdecl e não __clrcall. Tipos nativos com funções de membro usando __clrcall convenção de chamada não podem ser capturados em um módulo compilado com /clr.

Se a exceção for detetada em um módulo compilado com /clr:pure, você poderá ignorar esse aviso.

Para obter mais informações, consulte /clr (Common Language Runtime Compilation).

Example

O exemplo a seguir gera C4382.

// C4382.cpp
// compile with: /clr /W1 /c
struct S {
   __clrcall ~S() {}
};

struct T {
   ~T() {}
};

int main() {
   S s;
   throw s;   // C4382

   S * ps = &s;
   throw ps;   // OK

   T t;
   throw t;   // OK
}