declarar (CRT)
Avalia uma expressão e, quando o resultado é false, imprime uma mensagem de diagnóstico e anula o programa.
void assert(
int expression
);
Parâmetros
- expression
Expressão (inclusive os ponteiros) que é avaliada como diferente de zero ou 0.
Comentários
O assert macro geralmente é usada para identificar erros de lógica durante o desenvolvimento do programa por meio da implementação de expression argumento a ser avaliada como false somente quando o programa estiver funcionando incorretamente.Depois de depuração estiver concluída, a verificação de declaração pode ser desligada sem modificar o arquivo de origem, definindo o identificador NDEBUG.NDEBUGpode ser definido com um /D a opção de linha de comando ou com um #define diretiva.Se NDEBUG é definida com #define, a diretiva deve aparecer antes de ASSERT.H está incluído.
assertImprime um diagnóstico mensagem expression for avaliada como false (0) e chamadas anular para finalizar a execução do programa.Nenhuma ação será executada se expression é true (diferente de zero).A mensagem de diagnóstico inclui a expressão com falha, o nome do que o número de linha e o arquivo de origem onde o assertion failed.
A mensagem de diagnóstico é impresso em caracteres de largura.Assim, ele funcionará conforme o esperado, mesmo se houver caracteres Unicode na expressão.
O destino da mensagem de diagnóstico depende do tipo de aplicativo que chamou a rotina.Aplicativos de console sempre recebem a mensagem por meio de stderr.Em um aplicativo baseado no Windows, assert chama o Windows MessageBox função para criar uma caixa de mensagem para exibir a mensagem junto com um OK botão.Quando o usuário clica OK, o programa anula imediatamente.
Quando o aplicativo está vinculado com uma versão de depuração das bibliotecas de tempo de execução, assert cria uma caixa de mensagem com três botões: anular, novamente, e Ignorar.Se o usuário clicar em anular, o programa anula imediatamente.Se o usuário clicar em novamente, o depurador é chamado e o usuário pode depurar o programa se a depuração just-in-time (JIT) está ativada.Se o usuário clicar em Ignorar, assert continua com sua execução normal: criar a caixa de mensagem com o OK botão.Observe que clicar em Ignorar quando existe a uma condição de erro pode resultar em um comportamento indefinido.
Para obter mais informações sobre a depuração do CRT, consulte Técnicas de depuração CRT.
O assert rotina está disponível em ambas as versões de lançamento e de depuração das bibliotecas de tempo de execução C.Duas outras macros de declaração, _ASSERT e _ASSERTE, também estão disponíveis, mas eles somente avaliam as expressões passadas para eles quando o _ Debug sinalizador foi definido.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
assert |
<assert.h> |
Exemplo
Neste programa, o analyze_string função usa o assert a função para testar várias condições relacionadas à seqüência de caracteres e comprimento.Se alguma das condições a falhar, o programa imprime uma mensagem indicando o que causou a falha.
// crt_assert.c
// compile with: /c
#include <stdio.h>
#include <assert.h>
#include <string.h>
void analyze_string( char *string ); // Prototype
int main( void )
{
char test1[] = "abc", *test2 = NULL, test3[] = "";
printf ( "Analyzing string '%s'\n", test1 ); fflush( stdout );
analyze_string( test1 );
printf ( "Analyzing string '%s'\n", test2 ); fflush( stdout );
analyze_string( test2 );
printf ( "Analyzing string '%s'\n", test3 ); fflush( stdout );
analyze_string( test3 );
}
// Tests a string to see if it is NULL,
// empty, or longer than 0 characters.
void analyze_string( char * string )
{
assert( string != NULL ); // Cannot be NULL
assert( *string != '\0' ); // Cannot be empty
assert( strlen( string ) > 2 ); // Length must exceed 2
}
Equivalência do .NET Framework
System::Diagnostics::Debug:: Assert