Compilerwarnung (Ebene 3) C4398
"Variable": Globales Objekt pro Prozess funktioniert möglicherweise nicht ordnungsgemäß mit mehreren appdo Standard s; erwägen Sie die Verwendung von __declspec(appdo Standard)
Hinweise
Eine virtuelle Funktion mit __clrcall Aufrufkonvention in einem systemeigenen Typ bewirkt die Erstellung einer anwendung Standard vtable. Eine solche Variable stimmt möglicherweise nicht ordnungsgemäß, wenn sie in mehreren Anwendungen verwendet wird Standard s.
Sie können diese Warnung beheben, indem Sie die Variable __declspec(appdomain)
explizit markieren. In Versionen von Visual Studio vor Visual Studio 2017 können Sie diese Warnung beheben, indem Sie mit /clr:pure kompilieren, wodurch globale Variablen pro appdo Standard standardmäßig erstellt werden. Die Option "/clr:pure compiler" ist in Visual Studio 2015 veraltet und wird in Visual Studio 2017 nicht unterstützt.
Weitere Informationen finden Sie unter appdo Standard und Application Do Standard s und Visual C++.
Beispiel
Im folgenden Beispiel wird C4398 generiert.
// 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