Share via


Como: Migrar para o/CLR: safe

Visual C++ 2005 Gerar componentes verificáveis com o uso /clr:safe, que faz com que o compilador gere erros para cada construção de código não pode ser verificada.

Comentários

Os seguintes problemas geram verifiability erros:

  • Tipos nativo.Mesmo se não for usado, a declaração de classes nativas, estruturas, ponteiros ou arrays impedirá a compilação.

  • Variáveis global

  • Função chamadas em qualquer biblioteca não gerenciada, incluindo Common Language tempo de execução chamadas de função

  • Uma função pode ser verificada não pode conter um static_cast Operador para projeção-down. The static_cast Operador pode ser usado para a conversão entre tipos primitivos, mas para down-elenco safe_cast ou uma projeção de estilo C (que é implementado sistema autônomo um safe_cast) deve ser usado.

  • Uma função pode ser verificada não pode conter um reinterpret_cast Operador (ou qualquer estilo C converter equivalente).

  • Uma função pode ser verificada não é possível realizar aritmética em um interior_ptr. Só pode atribuir a ela e desreferenciar a ele.

  • Uma função pode ser verificada apenas pode lançar ou capturar ponteiros para os tipos de referência, para que tipos de valor devem ser in a box antes de lançar.

  • Uma função verificável só pode chamar funções verificáveis (como chamadas para o common linguagem tempo de execução não são permitidos, incluem AtEntry/AtExit e assim global construtores estão desativadas).

  • Uma classe pode ser verificada não é possível usar Explicit.

  • Se criar um EXE, uma função main não é possível declarar qualquer parâmetros, portanto, GetCommandLineArgs deve ser usado para recuperar argumentos da linha de comando.

  • Fazendo uma telefonar não-virtual para uma função virtual.Por exemplo:

    // 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
    }
    

Além disso, as seguintes palavras-chave não podem ser usadas no código verificável:

Consulte também

Referência

Código puro e verificável