Declarações
This topic applies to:
Edition |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
Native only |
||||
Pro, Premium e Ultimate |
Native only |
Uma instrução de declaração especifica uma condição que você espera verdadeiras em algum ponto específico no seu programa. Se essa condição não verdadeiras, a declaração falhará, a execução do programa for interrompida e o caixa de diálogo Assertion Failed aparece.
Visual C++ oferece suporte a instruções de declaração, com base nos seguintes construções de:
Declarações de MFC para o programa MFC.
ATLASSERT de programas que usam ATL.
Declarações de CRT de programas que usam a biblioteca de tempo de execução C.
O ANSI declarar a função para outros programas em C/C++.
Você pode usar as declarações para:
Captura erros de lógica. For more information, see Captura de erros de lógica.
Verifique os resultados de uma operação. For more information, see Resultado da verificação.
Condições de erro de teste devem ter sido tratadas. For more information, see O teste de condição de erro.
MFC e declarações de biblioteca C Run-Time.
Quando o depurador pára por causa de uma declaração de biblioteca de tempo de execução MFC ou C, ele navega até o ponto no arquivo de origem onde a afirmação ocorreu (se a fonte estiver disponível). A mensagem de declaração aparece no a janela de saída , bem como o Assertion Failed caixa de diálogo. Você pode copiar a mensagem de declaração da saída janela para uma janela de texto, se você deseja salvá-lo para referência futura. O saída janela pode conter outras mensagens de erro bem. Examine essas mensagens com cuidado, pois eles fornecem pistas para a causa da falha de declaração.
Através do uso livre de asserções em seu código, você pode capturar vários erros durante o desenvolvimento. Uma boa regra é escrever uma asserção para cada pressuposição que você fizer. Se você assumir um argumento não for nulo, por exemplo, use uma instrução de declaração para verificar essa suposição.
_ DEBUG
Afirmação instruções compilar somente quando _ Debug está definido. Quando _ Debug não é definido, o compilador trata asserções como instruções nulas. Portanto, instruções de declaração tem zero sobrecarga no seu programa de lançamento final; Você pode usá-los livremente em seu código sem afetar o desempenho da sua versão de lançamento e sem ter que usar #ifdef diretivas.
Efeitos colaterais do uso de declarações
Quando você adiciona asserções em seu código, certifique-se das que declarações não tem efeitos colaterais. Por exemplo, considere a seguinte declaração:
ASSERT(nM++ > 0); // Don't do this!
Porque o ASSERT expressão não é avaliada na versão de lançamento do seu programa, nM terão valores diferentes nas versões Debug e Release. No MFC, você pode usar o VERIFY macro em vez de ASSERT. Verificar avalia a expressão, mas não verifica o resultado na versão de lançamento.
Cuidado especial sobre o uso de chamadas de função em instruções de declaração, como avaliar uma função pode ter efeitos colaterais inesperados.
ASSERT ( myFnctn(0)==1 ) // unsafe if myFnctn has side effects
VERIFY ( myFnctn(0)==1 ) // safe
Verificar chamadas myFnctn nas versões de depuração e de lançamento, portanto é aceitável usar. No entanto, você ainda tem a sobrecarga de uma chamada de função desnecessários na versão de lançamento.