Jak: Migrowanie do /clr:safe (C + +/ CLI)
Visual C++ można wygenerować sprawdzalnych składniki za pomocą /clr:safe, który powoduje, że kompilator generować błędy dla każdego konstrukcja-sprawdzalnych kodu.
Uwagi
Następujące kwestie generować błędy możliwość weryfikacji:
Typy macierzystym.Nawet jeśli nie jest używany, deklarację macierzystych klas, struktury, wskaźniki lub tablice uniemożliwi kompilacji.
Zmienne globalne
Wywołania funkcji do wszelkich niezarządzanego biblioteki, włączając wspólne wywołania funkcji środowiska wykonawczego języka
Nie może zawierać zweryfikowania funkcji Operator static_cast do odlewania w dół.Operator static_cast Można używać do odlewania między typów pierwotnych, ale do odlewania w dół, safe_cast (C++ Component Extensions) lub cast styl C (która jest zaimplementowany jako safe_cast (C++ Component Extensions)) musi być używane.
Nie może zawierać zweryfikowania funkcji Operator reinterpret_cast (lub równoważny oddanych stylu języka C).
Zweryfikowania funkcji nie można wykonywać operacje arytmetyczne na interior_ptr (C++/CLI).Tylko może przypisać do niej i do niego.
Zweryfikowania funkcji można tylko throw lub połowów wskaźniki do typów odwołań tak typów wartości należy ramkach przed wyrzuceniem.
Zweryfikowania funkcji może wywołać tylko funkcje sprawdzalnych (takie, że wywołania common language runtime nie są dozwolone, AtEntry/AtExit, i tak globalnego konstruktory są niedozwolone).
Nie można użyć klasy sprawdzalnych Explicit.
Jeśli konstruowany EXE, głównych funkcji nie można zadeklarować wszystkie parametry, tak GetCommandLineArgs musi być używana do pobierania argumentów wiersza polecenia.
Wprowadzanie-wirtualne wywołanie funkcji wirtualnych.Na przykład:
// 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 }
Ponadto następujące słowa kluczowe nie można używać w sprawdzalnych kodu:
niezarządzany i pack pragmas
owies i wyrównać__declspec modyfikatorów
__try i**__except**