Nasıl yapılır: /clr:safe için geçiş (C++/ CLI)
Visual C++ /clr:safe kullanarak doğrulanabilir bileşenler oluşturabilir ve bu derleyicinin her bir doğrulanamaz kod yapısı için hata üretmesine neden olur.
Notlar
Aşağıdaki sorunlar doğrulayabilirlik hataları oluşturur:
Yerel türler. Kullanılmasa dahi, yerel sınıfların, yapıların, işaretçilerin veya dizilerin açıklanması derlemeyi engelleyecektir.
Genel değişkenler
İşlev, ortak dil çalışma zamanı fonksiyon çağrıları dahil, yönetilmeyen herhangi bir kütüphaneyi çağırır
Doğrulanabilir bir işlev, aşağı dönüştürme için static_cast operatörü bağlantısı içeremez. static_cast operatörü öğesi basit türler arasında atama için kullanılabilir ancak aşağı dönüştürme, safe_cast (C++ Bileşen Uzantıları) öğesi veya bir C-Türü atamada (bir safe_cast (C++ Bileşen Uzantıları) olarak gerçekleştirilen) kullanılmalıdır.
Doğrulanabilir bir işlev, reinterpret_cast operatörü bağlantısı (veya herhangi bir C tarzı dönüştürme eşdeğeri) içeremez.
Doğrulanabilir bir işlev, interior_ptr (C++/CLI) bağlantısı üzerinde aritmetik gerçekleştiremiyor. Sadece ona atayabilir ve başvurabilir.
Doğrulanabilir bir işlev yalnızca başvuru türlerine işaretçi atabilir veya yakalayabilir, dolayısıyla değer türleri atmadan önce kutulanmalıdır.
Doğrulanabilir bir işlev yalnızca doğrulanabilir işlevleri çağırabilir (öyle ki AtEntry/AtExit dahil ortak dil çalışma çağrılarına izin verilmez ve dolayısıyla genel oluşturuculara da izin verilmez).
Doğrulanabilir bir sınıf, Explicit başvurusunu kullanamaz.
Bir EXE oluşturuluyorsa, ana işlev herhangi bir parametre bildirimi yapamaz, bu nedenle GetCommandLineArgs komut satırı bağımsız değişkenlerini almak için kullanılmalıdır.
Sanal olmayan bir aramayı sanal işleve dönüştürme. Örne?in:
// not_verifiable.cpp // compile with: /clr ref struct A { virtual void Test() {} }; ref struct B : A {}; int main() { B^ b1 = gcnew B; b1->A::Test(); // Non-virtual call to virtual function }
Ayrıca, aşağıdaki anahtar kelimeler doğrulanabilir kod içinde kullanılamaz:
yönetilmeyen ve paket pragmalar
çıplak ve hizalama __declspec değiştiricileri
__try ve __except