Como: Migrar para o /CLR: safe
Visual C++ pode gerar verificáveis componentes usando /clr:safe, que faz com que o compilador gere erros para cada construção de código não verificável.
Comentários
Os seguintes problemas geram erros de verifiability:
Tipos nativos. Mesmo se não for usado, a declaração de classes nativas, estruturas, ponteiros ou arrays impedirá a compilação.
Variáveis globais
Chamadas de função em qualquer biblioteca não gerenciada, inclusive chamadas de função do common language runtime
Uma função verificável não pode conter um static_cast Operator para baixo-elenco. O static_cast Operator pode ser usado para conversão entre tipos primitivos, mas para conversão inferior, safe_cast ou uma projeção de estilo C (que é implementado como um safe_cast) deve ser usado.
Uma função verificável não pode conter um reinterpret_cast Operator (ou qualquer equivalente de projeção de estilo C).
Uma função verificável não pode executar cálculos aritméticos em um interior_ptr. Ele só pode atribuir a ele e referência.
Uma função verificável só pode lançar ou catch ponteiros para os tipos de referência, portanto, os tipos de valor devem ser in a box antes de lançar.
Uma função verificável só pode chamar funções verificáveis (de modo que as chamadas para o common language runtime não são permitidas, incluem AtEntry/AtExit, e, portanto, construtores globais não são permitidos).
Uma classe verificável não é possível usar Explicit.
Se construindo um EXE, uma função main não pode declarar quaisquer parâmetros, portanto, GetCommandLineArgs deve ser usado para recuperar argumentos de linha de comando.
Fazendo uma chamada de não-virtual para uma função virtual. For example:
// 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:
não gerenciado e pack pragmas
nua e Alinhar __declspec modificadores
__try e __except