Derleyici Uyarısı (düzey 3) C4398
'variable' : İşlem başına genel nesne birden çok uygulama etki alanıyla düzgün çalışmayabilir; __declspec(appdomain) kullanmayı göz önünde bulundurun
Açıklamalar
Yerel türde __clrcall çağırma kuralına sahip bir sanal işlev, uygulama etki alanı başına vtable oluşturulmasına neden olur. Bu tür bir değişken birden çok uygulama etki alanında kullanıldığında doğru olmayabilir.
değişkenini __declspec(appdomain)
açıkça işaretleyerek bu uyarıyı çözebilirsiniz. Visual Studio'nun Visual Studio 2017'den önceki sürümlerinde, varsayılan olarak uygulama etki alanı başına genel değişkenler oluşturan /clr:pure ile derleyerek bu uyarıyı çözebilirsiniz. /clr:pure derleyici seçeneği Visual Studio 2015'te kullanım dışıdır ve Visual Studio 2017'de desteklenmez.
Daha fazla bilgi için bkz . uygulama etki alanı ve Uygulama Etki Alanları ve Visual C++.
Örnek
Aşağıdaki örnek C4398 oluşturur.
// 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