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:
não gerenciado and empacotar pragmas
naked and align __declspec modifiers
__try and __except