Aracılığıyla paylaş


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