Condividi tramite


Avviso del compilatore (livello 3) C4398

'variable': l'oggetto globale per processo potrebbe non funzionare correttamente con più domini app. Prendere in considerazione l'uso di __declspec(appdomain)

Osservazioni:

Una funzione virtuale con __clrcall convenzione di chiamata in un tipo nativo causa la creazione di una tabella virtuale per dominio applicazione. Una variabile di questo tipo potrebbe non essere corretta quando viene usata in più domini applicazione.

È possibile risolvere questo avviso contrassegnando in modo esplicito la variabile __declspec(appdomain). Nelle versioni di Visual Studio precedenti a Visual Studio 2017 è possibile risolvere questo avviso compilando con /clr:pure, che rende le variabili globali per ogni dominio app per impostazione predefinita. L'opzione del compilatore /clr:pure è deprecata in Visual Studio 2015 e non supportata in Visual Studio 2017.

Per altre informazioni, vedere Appdomain e Application Domains e Visual C++.

Esempio

L'esempio seguente genera l'errore 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