Udostępnij za pośrednictwem


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:

Zobacz też

Informacje

Kod czystej i zweryfikowania (C + +/ CLI)