Delen via


Compilerwaarschuwing (niveau 3) C4398

'variabele': globaal object per proces werkt mogelijk niet correct met meerdere appdomains; overweeg om __declspec(appdomain) te gebruiken

Opmerkingen

Een virtuele functie met __clrcall aanroepconventie in een systeemeigen type zorgt ervoor dat een vtable per toepassingsdomein wordt gemaakt. Een dergelijke variabele kan niet correct worden gecorrigeerd wanneer deze in meerdere toepassingsdomeinen wordt gebruikt.

U kunt deze waarschuwing oplossen door de variabele __declspec(appdomain)expliciet te markeren. In versies van Visual Studio voor Visual Studio 2017 kunt u deze waarschuwing oplossen door te compileren met /clr:pure, waardoor globale variabelen standaard per appdomein worden gemaakt. De optie /clr:pure compiler is afgeschaft in Visual Studio 2015 en wordt niet ondersteund in Visual Studio 2017.

Zie appdomain en Application Domains en Visual C++ voor meer informatie.

Example

In het volgende voorbeeld wordt C4398 gegenereerd.

// 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