Partilhar via


Aviso do compilador (nível 3) C4398

'variável' : o objeto global por processo pode não funcionar corretamente com vários domínios de aplicativo; considere o uso de __declspec(appdomain)

Observações

Uma função virtual com convenção de chamada __clrcall em um tipo nativo provoca a criação de um vtable por domínio de aplicação. Essa variável pode não ser corrigida corretamente quando usada em vários domínios de aplicativo.

Você pode resolver esse aviso marcando explicitamente a variável __declspec(appdomain). Em versões do Visual Studio anteriores ao Visual Studio 2017, você pode resolver esse aviso compilando com /clr:pure, o que torna variáveis globais por appdomain por padrão. A opção de compilador /clr:pure foi preterida no Visual Studio 2015 e não tem suporte no Visual Studio 2017.

Para obter mais informações, consulte appdomain e Application Domains e Visual C++.

Example

O exemplo a seguir gera C4398.

// C4398.cpp
// compile with: /clr /W3 /c
struct S {
   virtual void f( System::String ^ );   // String^ parameter makes function __clrcall
};

S glob_s;   // C4398
__declspec(appdomain) S glob_s2;   // OK