Declaração e mensagens fornecido pelo usuário (C++)
Os C++ idioma suporta três tratamento de erros mecanismos que ajudam você depurar seu aplicativo: o diretiva # Error, o static_assert palavra-chave e o assert (CRT) macro.Todos os três mecanismos emitem mensagens de erro e dois também testar asserções de software.Uma declaração de software Especifica uma condição que você espera para ser verdade em um momento específico em seu programa.Se uma declaração de tempo de compilação falhar, o compilador emitirá uma mensagem de diagnóstico e um erro de compilação.Se uma declaração de tempo de execução falhar, o sistema operacional emite uma mensagem de diagnóstico e fecha o seu aplicativo.
Comentários
O tempo de vida do seu aplicativo consiste em um pré-processamento, compilar e executar a fase de tempo.Cada mecanismo de tratamento de erro acessa informações de depuração estão disponíveis durante uma destas fases.Para depurar efetivamente, selecione o mecanismo que fornece as informações apropriadas sobre essa fase:
O diretiva # Error está em vigor no tempo de pré-processamento.Incondicionalmente, ele emite uma mensagem especificada pelo usuário e faz com que a compilação falhará com um erro.A mensagem pode conter texto que é manipulado por diretivas de pré-processamento, mas qualquer expressão resultante não será avaliada.
O static_assert declaração está em vigor no momento da compilação.Ele testa uma afirmação de software que é representada por uma expressão de integral especificado pelo usuário que pode ser convertida em um valor booleano.Se a expressão for avaliada como zero (FALSO), o compilador emitirá a mensagem especificada pelo usuário e a compilação falhará com um erro.
O static_assert declaração é especialmente útil para depuração de modelos como argumentos de modelo podem ser incluídos na expressão especificada pelo usuário.
O assert (CRT) macro está em vigor em tempo de execução.Ele avalia uma expressão especificada pelo usuário e se o resultado for zero, o sistema emite uma mensagem de diagnóstico e fecha o seu aplicativo.Muitas outras macros, como _ASSERT e _ASSERTE, se parecem com essa macro, mas emitir mensagens diferentes de diagnóstico definidas pelo sistema ou definidos pelo usuário.