Share via


Upozornění kompilátoru (úroveň 3) C4398

Proměnná: Globální objekt pro jednotlivé procesy nemusí správně fungovat s více doménami appdomain; zvažte použití __declspec(appdomain).

Poznámky

Virtuální funkce s __clrcall konvencí volání v nativním typu způsobí vytvoření virtuální tabulky pro každou doménu aplikace. Taková proměnná nemusí být správně správná při použití v několika doménách aplikace.

Toto upozornění můžete vyřešit explicitním označením proměnné __declspec(appdomain). Ve verzích sady Visual Studio před sadou Visual Studio 2017 můžete toto upozornění vyřešit kompilací pomocí /clr:pure, což ve výchozím nastavení zpřístupňuje globální proměnné na doménu aplikace. Možnost /clr:pure compiler je v sadě Visual Studio 2015 zastaralá a v sadě Visual Studio 2017 není podporována.

Další informace najdete v tématu appdomain a aplikační domény a Visual C++.

Příklad

Následující ukázka vygeneruje 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